Java心得体会之面向对象(一)

面向对象三大特征: 继承、封装、多态
继承的目的: 减少多个class的共有的冗余代码,便于重用
封装的几个关键字总结:
private
只能被类自身调用

public
同一项目任何地点均可调用

protected
A、可以被类自身中的方法调用
B、可以在子类中直接调用父类的protected属性和方法
C、不能被对象直接调用(不同的包)
可以被本包的对象直接调用

默认关键字(friendly)
1. 可以被本包的对象直接调用
2. 不能被外部包的对象调用
3. 即使是子类对象如果不是同包也不可以调用

is-a 与 has-a的关系
子类与父类的关系是is-a,即子类对象是父类对象,两者是继承关系。
如职员和经理,职员类是父类,经理类是子类,经理都是职员,但是职员不一定是经理。
一个类当中包含另一个类对象作为本类的属性,这两者关系就是聚合(aggreagation),也就是has-a,就是含有的意思,如公司类和职员类。

代码的开发原则: 优先使用聚合,然后是继承

子类和父类的调用顺序:
1. 初始化父类的静态代码块,当然包括静态变量
2. 初始化子类的静态变量
3. 给父类的属性赋值
4. 调用父类的构造方法进行初始化
5. 给子类的属性赋值
6. 调用子类的构造方法进行初始化

子类可以继承父类的那些属性和方法:
1. 父类的private属性和方法,都不能继承
2. 父类的protected属性和方法,都可以继承
3. 父类的public属性和方法,都可以继承
4. 父类的默认关键字修饰的属性和方法,如果子类和父类在同一个包内,就可以继承;否则不行;

重写:override
子类有一个与父类,同名、同参、同返回值(有特殊情况)的方法,那么就说子类的这个方法重写了父类的同名方法;
如果子类方法的返回值是父类方法的返回值的一个子类,如父类方法返回值是Objec类型,子类方法是String,父类方法返回值类型是List,子类方法返回值类型是ArrayList,也属于重写。
重写的本质就是:用子类内存区中方法的首地址,替换父类内存区中同名方法的首地址,所以如果父类引用Father father = new Son();
father.fun();调用的是子类中的fun方法,因为父类中的方法此时所指向的地址即内存中子类方法的内存存储区。

抽象类与抽象方法:
1. 不能够被实例的class,用abstract进行修饰,这就是抽象类;
2. 抽象类中可以写抽象方法、还可以写非抽象方法;
3. 非抽象类中不能定义抽象方法;
4. 抽象类中定义的抽象,必须要在子类中被重写;
5. 如果子类不是抽象方法必须重写父类的抽象方法
通过抽象方法,可以实现多态。

final关键字的总结:
1. final修饰变量(非引用类型),使之成为常量。
2. final修饰引用型变量的时候会锁定了引用的地址,使之不能再发生变化,即一旦实例化不能再令这个引用指向其他同类型或者子类对象;
3. final修饰类,这个class不能被子类继承,如:String类;
4. final修饰方法,使之不能被子类重写;

你可能感兴趣的:(java,继承,面向对象)