封装(private)
-
该露的露,该藏的藏
- 程序设计要追求"高内聚,低耦合"。高内聚就类的内部数据操作细节自己完成,不允许外部干涉;低耦合,仅暴露少量的方法给外部使用
-
封装(数据的隐藏)
- 通常,应禁止直接访问一个对象数据的实际表示,而应通过操作接口来访问,这称为信息隐藏
-
属性私有,get/set
继承
- 继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模
- extends 的意思是”扩展“。子类是父类的扩展
- Java中类只有单继承,没有多继承。一个子类只能有一个父类,一个父类可以有多个子类
- 继承是类和类之间的一种关系。除此之外,类和类之间的关系还有依赖,组合,聚合等
- 继承关系的两个类,一个为子类(派生类),一个为父类(基类)。子类继承父类用extends关键字来表示
- 子类和父类之间,从意义上讲应该具有”is a“的关系
- 私有(private)的东西是无法继承的 所以继承一般是public 方法
- 子类继承了父类,就会拥有父类的所有方法
super注意点
- super调用父类的构造方法,必须在构造方法的第一行
- super必须只能出现在子类的方法或者构造方法中
- super 和 this 不能同时调用构造方法
VS this
-
代表的对象不同
- this:本身调用这个对象
- super:代表父类对象的应用
-
前提
- this:没有继承也可以使用
- super:只能在继承条件才可以使用
-
构造方法
- this();本类的构造
- super();父类的构造
重写
-
需要有继承关系,子类重写父类的方法
-
重写只针对方法
-
方法名必须相同
-
参数列表列表必须相同
-
修饰符:范围可以扩大但不能缩小;public—>protected—>default—>private
-
抛出的异常:范围,可以被缩小但不能扩大;ClassNotFoundException—>Exception(大)
-
重写,子类的方法和父类必须一致,方法体不同
为什么要重写
- 父类的功能子类不一定需要,或者不一定满足
- alt + insert ;override(方法重写)
/静态的方法和非静态的方法区别很大
//静态方法: 方法的调用只和左边,定义的数据类型有关
//非静态:重写 关键字只能是public
- static 静态方法
多态
-
即同一方法可以根据发送对象的不同而采取多种不同的行为方式
-
一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多
-
多态的存在条件
- 有继承关系
- 子类重写父类方法
- 父类引用指向子类对象
-
注意:多态是方法的多态,属性没有多态
-
instanceof (数据类型)引用类型 判断一个对象是什么类型; instanceof 可以判断两个类型之间是否有继承(父子)关系
多态注意事项
- 多态是方法的多态,属性没有多态
- 父类和子类,是有联系的 类型转换异常ClassCastException!
- 存在条件 :继承关系,方法需要重写,父类引用指向子类对象 Father f1 = new Son();
- 不能被重写的方法
- static 静态方法,属于类,不属于实例
- final 常量
- private 私有方法
- 不能被重写的方法
//类型之间的转换: 父 子
//高 低
Person1 obj = new Student1();
//将obj转换为Student1类型,我们就可以使用Student1类型的方法了
((Student1)obj).eat();
//子类转换父类可能会丢失自己本来的一些方法
-
父类引用指向子类的对象
-
把子类转换为父类,向上转型
-
把父类转换为子类,向下转型:强制转换
-
方便方法的调用,减少重复的代码,简洁