Day11-封装-继承-多态


-
高内聚,低耦合
高内聚就是类的内部数据操作细节自己完成,不允许外部干涉。
低耦合暴露少量的方法给外部使用。
-
封装:禁止直接访问一个对象中的数据实际表示,而应通过接口来访问,这称为信息隐藏(就是把一个数据放到上锁的盒子里保存,然后通过钥匙来打开访问)
-
属性私有: get/set
-
Student类
public class Student {
//属性私有
private String name;
private int id;
private int age;
//提供方法访问,get/set
//get方法获取封装的数据
public String getName(){
return this.name;
}
//set方法设置数值
public void setName(String name){
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
if (id !=0) {
this.id = id;
} else {
this.id = -1;
}
}
}// get/set可通过alt+insert快捷输入
-
应用类
public class Application {
public static void main(String[] args) {
Student s1 = new Student();
s1.setName("张三");
System.out.println(s1.getName());
s1.setId(012131);
System.out.println(s1.getId());
}
}
继承
-
继承本质就是对某一批类的抽象
-
继承在java中只有单继承
-
在java中,所有的类都是直接或间接继承 object类
-
继承了父类所有的没有被私有的方法(只是方法)
-
Person父类
public class Person {
public String Name;
public int age;
private int money = 1_0000_0000;
public int getMoney() {
return money;
}
public void setMoney(int money) {
this.money = money;
}
public void say(){
System.out.println("我是fw");
}
}
-
Student子类(继承父类所有方法)
public class Student extends Person {
}
-
应用类
public class Application {
public static void main(String[] args) {
Student s1 = new Student();
System.out.println(s1.getMoney());
s1.say();
}
}
//输出结果
100000000
我是fw
-
super
-
super调用父类的构造方法,而且还要在构造方法的第一个
-
只能出现在子类或构造方法中
-
super和this不能同时调用构造方法,不能同时出现
-
this
-
this表示本类的对象,而super的是父类
-
this没继承也可用,而super需要继承
-
this(); 本类的构造
super(); 父类的构造
方法重写
-
重写都是方法的重写,和属性无关
-
方法名相同,参数列表相同
-
修饰符:范围可以扩大但不能缩小 public>protected>default>private
-
抛出的异常:范围可以被缩小但不能扩大: ClassNotFoundException -->Exception(大)、
-
静态方法的重写是跟左边的对象,而非静态的方法重写就是子类重写了父类的方法
重写是因为父类的功能子类不一定需要,或者子类需要的功能父类没有
多态
-
多态是方法的多态
-
父类和子类,有联系,类型转换异常 ClassCastExceotion
-
存在条件:有继承关系,方法需要重写,父类引用子类对象 Father f1 = new Son();
-
static 方法属于类,他不属于实例、final是常量、private方法都不能多态
浙公网安备 33010602011771号