该露的露,该藏的藏:我们程序设计要追求“高内聚,低耦合”。高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合即仅暴露少量的方法给外部使用。封装(数据的隐藏)。通常,应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问,这成为信息隐藏。!!:属性私有,get/set 继承
本质是对某一批类的抽象,从而实现对现实世界更好的建模。
extends的意思是“扩展”。子类是父类的扩展。
Java中类只有单继承,没有多继承!一个子类只能有一个父类!!
继承是类和类之间的的一种关系。还有依赖、组合、聚合等关系。
继承关系的两个类,一个为子类(派生类),一个为父类(基类)。子类继承父类,使用关键字extends来表示。
子类和父类之间,从意义上讲应该具有“is a”的关系。
object类
super - this
- super调用父类this调用当前类私有的(private)无法被继承super和this不能同时调用构造方法
方法重写:重点—>多态(只能重写方法)
//方法为静态:方法的调用只和左边,定义的数据类型有关
//非静态方法子类重写父类,关键字只能是public的
A a = new A();
A.test();//A
//父类的引用指向了子类
B b = new A();
b.test();//B
此例为静态方法,不是重写
为什么要重写
- 父类的功能,子类不一定需要,或者不一定满足!
动态编译:类型:可扩展性
即同一方法可以根据发送对象的不同采用多种不同的行为方式。
一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多。
多态存在的条件
- 有继承关系子类重写父类方法父类引用指向子类对象
!!多态是方法的多态,属性没有多态性。
instanceof (类型转换) 引用类型,判断一个对象是什么类型~
X instanceof Y;//要看X和Y之间是否有父子关系类型转换
高 低 Person student = new Student(); //将student这个对象转换为Student类型就可以使用Student的方法 Student s1 = (Student) student; s1.go();
//类型之间的转换:父 子 Student student = new Student(); student.go(); //子类转父类可能丢失自己的一些方法 Person person = student; ((Student) person).go();



