继承的由来:
当很多类有重复的属性或者方法,那么我们就把重复的部分抽取出来,封装为一个类,让很多类来继承这个单独的类,重复的部分就不用写了.
继承的格式:
class B extends A{ }
class C extends A{ }
继承的特点:
1.单继承
一个类 只能继承 一个类,不用同时继承两个或两个以上的类
2.多层继承 --构成了继承体系
如果描述这个体系,共性的属性或者功能,看顶层
如果使用这个体系的属性和功能,使用 最低层
继承的注意事项:
a:子类只能继承父类所有非私有的成员(成员方法和成员变量)
private 不能继承, 只能本类访问
b:子类不能继承父类的构造方法,因为构造方法名字跟类名一致,但是可以通过 super(马上讲)关键字去访问父类构造方法。
c:不要为了部分功能而去继承
继承实现了类与类的关系
类中:
成员变量:
变量名字不同:父类有的子类可以直接用
变量名字相同:子类使用的时候自己的
子类还想使用父类的成员, 使用super
super.成员 表示的是父类的成员
this 和super的区别:
this:当前对象的引用 (创建对象)
super:父类存储空间的标识 (理解为父类的引用)
局部变量 成员变量 父类成员变量 使用顺序
局部变量:num =10;
成员变量: this.成员
父类成员: super.成员
就近原则去找
构造方法:不能继承,但是我们可以调用父类的构造方法
子类的构造方法默认调用 父类的无参构造.
因为构造方法是给类初始化数据的,子类如果想使用父类的成员变量的值,那么必须用父类的先构造初始化.
注意事项:
1.父类中的成员变量被private修饰了,还得对外提供一个公共的访问方式.构造方法就是public的,那么子类想构造,就可以直接调用父类的构造方法了!
2.父类中没有无参构造
方式一:使用super中的有参构造
方式二:使用this中的有参构造,前提是有参构造也得访问到父类super有参构造中
3. super和this 必须在第一行,并且只能有一个
成员方法 : 都是可以被继承的
get()/set()
show()/ call()
如果子类中写了跟父类同名的方法,子类方法覆盖父类方法,这叫方法重写.
重写和重载的区别:
重写:子类和父类,方法声明一模一样,子类覆盖父类方法
重载:本类中,方法名一样,参数列表不同
重写的应用:
子类可以增强父类的方法,通过 super.父类方法名增强.
关键字:
final:被final修饰的东西,不能被改变.可以修饰类 变量 方法
|
|