禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问 具体表现:
属性私有(private)get/set(提供一些可以操作这些属性的public方法)意义:
提高程序的安全性,保护数据隐藏代码的实现细节统一接口系统可维护性增加this this表示当前这个类(本身调用者) 在没有继承也可以使用 this():本类的构造
super super表示父类对象的引用 在继承条件下才能使用 super():父类的构造 new子类时先调用父类的构造器super() 再调用子类的构造器 注意点: 1.super调用父类的构造方法,必须在构造的方法的第一个 2.super必须只能出现在子类的方法或者构造方法中 3.super和this不能同时调用构造方法!
定义:同一方法可以根据发送对象的不同而采用多种不同的行为方式 一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多(父类及有关系的类)
Person s1 = new Student(); //父类的引用指向子类的对象 对象能执行哪些方法看对象左边的类型,和右边关系不大 子类能调用的方法都是自己或者继承父类的 父类可以指向子类,但不能调用子类独有的方法
注意点:
多态是方法的多态,属性没有多态父类和子类要有联系,没有的话会报类型转换异常(ClassCastException)存在条件:
继承关系方法需要重写父类引用指向子类对象 Father f1 = new son()不能重写(多态)的方法:
static修饰的方法,属于类,不属于实例final修饰的方法,在常量池里private修饰的方法,私有无法重写意义:方便方法的调用,减少重复的代码 instanceof X instanceof Y能不能编译通过取决于删除线格式 X指向的实际类型是否和Y有继承关系 类型之间的转化:低(子)能直接转高(父),高需要强制类型转化为低 直转(向上转型)举例: Son son = new son(); Father father = son; 子类转换为父类,可能丢失自己的本来的一些方法 强转(向下转型)举例: Father f = new son(); Son son = (Son) f; son.方法名… 就是父类用不了子类方法 但是把自己伪装成子类(类型转换)就可以用了