封装
- 封装是指将类的某些信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法来对隐藏的信息进行操作和访问。及将变量设置为私有的然后设置其对应的getter和setter
继承
- 将公共的变量和方法抽离出来写成父类,子类通过继承避免重复代码。子类可对父类的方法进行重写,更新虚方法表。
static
-
static变量是实例通用的
-
static方法只能访问静态变量和静态方法,非静态方法可以访问静态变量和静态方法,也可以访问非静态成员变量和非静态 成员方法.
继承
-
构造方法无法继承
-
成员变量:无论私有还是公共的都被继承但是私有的不能直接使用,公共的可以直接使用。
-
成员方法是否可以被继承?方法非private、非static、非final可以继承,及虚方法表里的方法可以继承.
-
继承中成员变量访问:就近原则、重名的话从局部向上找。本类->父类
-
super:不会在子类找,直接在父类寻找。
-
构造方法:
子类初始化的时候会默认先调用父类的初始化构造方法,默认有super()方法调用,子类调用父类有参构造方法,需要手动调用super()并且传值.
多态
-
多态表现形式:父类类型 对象名称 = new 子类对象()
-
多态的前提: 有继承关系、有父类引用指向子类对象、有方法的重写。
-
多态变量
编译和运行都看左边:
Animal a = new Dot()
sout(a.name);// a.name是父类中的name值
- 多态方法编译看左边,运行看右边
Animal a = new Dot()
a.show(); //编译的时候父类没有show方法会报错。
实际运行的时候是运行dot中的show方法