整理下相关知识点,打好基础,daydayup!
?其他oop相关的整理可以看这里?
java的面向对象编程(oop)——static概述及初始单例设计模式?
什么是继承
java中提供的一个关键字extends,用这个关键字,可以让一个类与另一个类建立父子关系。
1,子类能继承父类的非私有成员(成员变量,成员方法)
2,子类的对象由子类,父类共同完成?
类1称为子类;类2称为父类
类1 extends 类2
例:jichengA是jichengB的子类
public class jichengA extends jichengB{
}
例:jichengA(父类)中创建公开成员变量及成员方法后,jichengB(子类)中可以直接使用;同时在其他类中,创建子类后,可以引用父类和子类的公开成员变量及成员方法
?
减轻代码重复
例:a需要设置两个变量a和name;b需要设置两个变量b和name;由于a和b都需要设置name,为了防止代码重复,可以使name成为父类成员变量
做法如下图:A创建a变量,B创建b变量;C创建name变量,同时C为A和B的父类;最后在新的类中创建A和B类既可引用name变量,且同时引用A和B中的name变量时,name值不会被覆盖
?1,继承不支持同时继承;但支持间接继承
class a extends b,c {} //不可以,不支持同时继承
--------------------------
class b extends a{}
class c extends b{}
class c {}
//支持间接继承
2,object类为所有类的父类
如图:上下两项相等
class a {}
class a extends object{}
子类写了一个方法名称,形参列表与父类某个方法一样的方法覆盖父类的该方法
例:当B为C的子类时,觉得C里方法不好用时,可以在B里写同样的方法然后进行替换;(注:最好在新替换的方法上写@Override来进行提醒)
1,在子类方法中访问其他成员(成员变量,成员方法),依照就近原则
先在子类的局部范围内找;其次在子类成员范围内找;最后在父类范围内找
2,如果子父类中,出现了重名的成员,会优先使用子类,使用父类需要使用super关键字,使用子类非局部需要用this关键字,如下:
子类的全部构造器,都会先调用父类的构造器,再执行自己
9,子类构造器如何实现调用父类构造器
1,默认情况,子类全部构造器第一行为super()(默认存在),这个语句会调用父类的无参构造器
2,如果父类没有无参构造器,则必须在子类构造器第一行写super(参数),调用父类有参构造器
注:与super(参数)类似的语句还有this(参数)。super参数调用的是父类有参构造器,而this(参数)调用的是子类自己的构造器。都必须放在构造器的第一行。
整理结束,撒花!
?
?
?
?
?
?
?