1.封装:
1.1作用:做到程序的高内聚和低耦合; 尽量把模块的内部数据.功能实现隐藏在模块内部,然后暴露少量的的方法给外部使用
1.2访问控制符: 用来修饰类和成员
private
default
protected
public
外部类:只能使用public和default,因为外部类使用private和protected没有意义
内部类:(inner class),也称为嵌入类(nested class),它是定义在其他类的内部。内部类作为其外部类的一个成员,与其他成员一样,可以直接访问其外部类的数据和方法。 四种都可以用.
2.继承:
tips:如果父类的实例变量或者实例方法 不能被访问到,会被继承但是会隐藏
如果子类的实例变量与父类的实例变量重名,父类的实例变量也会被隐藏
1.单继承:每个子类只能有一个直接父类
2.不能获得父类的构造器
3.继承只针对实例方法和实例变量;
4.子类对父类的方法重写
a.方法名和参数列表必须一致
b.不能降低方法的访问范围
c.不能提高返回类型1.返回类型是对象:必须是本身或者子类2.返回类型是基本数据类型的必须保持一致
d.父类方法是private修饰的,不能被重写
5.使用super来调用父类中被隐藏的实例变量或者实例方法;super和this一样都是针对对象,不能在static方法中使用
6.继承会破坏封装,所以当子类需要增加属性,或者增加重写方法时,才用继承
--->很多时候可以利用组合来实现类的复用,而且并不会加大系统开销
3.多态
引用变量---->编译时类型 和 运行时类型
编译时类型:声明改变量时决定
运行时类型:实际赋给该变量的对象决定
tips:1.对象的实例变量不具备多态
2.引用变量在编译阶段只能调用其编译时类型所具有的方法和变量.
3.引用变量的强制类型转换
a.基本类型之间的转换只能是数值类型的转换:byte,short,int,long,char,double,float
b.引用类型的强制转换1.子类转父类总是能够成功;
2.父类转子类必须是其运行时类型为该子类类型
3.使用instanceof 来防止ClassCastException;