继承(extend)
被final修饰的类不能被继承。
Java中的继承就是在已经存在类的基础上进行扩展,从而产生新的类。已经 存在的类称为父类、基类或超类,而新产生的类称为子类或派生类。在子类中,不仅包含父类的属性和方法,还可以增加新的属性和方法。
-
继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模。
-
extands的意思是“扩展”。子类是父类的扩展。
-
JAVA中类只有单继承,没有多继承!
-
继承是类和类之间的一种关系。除此之外,类和类之间的关系还有依赖、组合、聚合等。
-
继承关系的俩个类,一个为子类(派生类),一个为父类(基类)。子类继承父类,使用关键字extends来表示。子类和父类之间,从意义上讲应该具有"is a"的关系.
调用父类的构造器必须在子类的第一行
注意:如果在父类中存在有参的构造方法而并没有重载无参的构造方法, 那么在子类中必须含有有参的构造方法,因为如果在子类中不含有构造方 法,默认会调用父类中无参的构造方法,而在父类中并没有无参的构造方 法,因此会出错。
super注意点
-
super调用父类的构造方法,必须在构造方法 发第一个
-
super 必须只能出现在子类的方法或者构造方法中!
-
super 和this 不能同时调用构造方法!
va this
代表的对象不同:
this:表示本身调用者这个对象 this():本类的构造
super: 代表父类对象的应用 super():父类的构造
前提:
-
this:没有继承也可以使用
-
super:只能在继承条件才可以适用
*重写都是方法的重写,跟属性无关
this与super的异同
-
子类和父类中变量或方法名称相同时,用 super 关键字来访问。可以理 解为 super 是指向自己父类对象的一个指针。在子类中调用父类的构造方法。
-
this 是自身的一个对象,代表对象本身,可以理解为 this 是指向对象本 身的一个指针。在同一个类中调用其它方法。
-
this 和 super 不能同时出现在一个构造方法里面,因为 this 必然会调用其它的构造方法,其它的构造方法中肯定会有 super 语句的存在,所 以在同一个构造方法里面有相同的语句,就失去了语句的意义,编译器 也不会通过。
-
this( ) 和 super( ) 都指的是对象,所以,均不可以在 static 环境中使 用,包括 static 变量、static 方法和 static 语句块。
-
从本质上讲,this 是一个指向对象本身的指针, 然而 super 是一个 Java 关键字。
方法的重写:
-
需要有继承关系,子类重写父类的方法!
-
子类的方法和父类必要一致,方法体不同!
-
参数列表必须完全与被重写的方法参数列表相同。
-
修饰符,范围可以扩大但不能缩小:public>protected>default>private;
为什么需要重写:父类的功能,子类不一定需要,或者不一定满足。