7.7方法重写

7.7方法重写
子类可以重写从父类继承的方法,从而允许子类添加或者改变父类中方法的行为。
这称为方法重写,是OOP的特征之一。
当子类重写父类的方法时,必须遵循如下的规则:
 子类的方法的返回值的类型、方法名和形式参数列表,必须和父类中的是相同的。如果子类中的方法与父类中的方法同名,但是子类的方法改变了形式参数列表,那么这是方法重载,而不是方法重写。不要混淆这两个概念,二者的用法是完全不同的。
 访问修饰符必须不小于父类中的访问修饰符。例如,如果父类的方法是public,那么子类的必须是public。如果父类的方法是protected,那么子类必须是protected或public(public比protected访问权更大)。
 子类中重写的异常不能抛出比父类更多的异常,

方法的重写:
子类中的方法与父类中的方法相同(方法名称、参数列表、返回类型)
方法重载:
一个类中的方法与另一个方法相同,参数列表不同
重写体现的是父类与子类方法之间的关系;
重载体现的是一个类的内部方法之间的关系。

     ==代表如果两边的数据类型是基本数据类型,那么直接比较值是否相等。
     如果两边的数据类型是引用数据类型,那么比较是引用是否相等。

Object类有一个用于判断两个对象是否相等的equals()方法。
我们编写的每一个类应该覆盖equals()方法,
以让类的用户判断什么时候类的实例是相等的。
7.71 equals()方法

equals()默认情况下,调用的是0bject.equals(),
这个方法比较是对象的引用是否一致,
但是在某些特殊的业务场景中,我们也可以重写该方法
equals()方法比较两个对象,测试二者是否相等。
比较运算符“==”用于检测是否两个引用指向同一对象,
这种比较方法是与equals()完全不同的。

我们还可以注意到类中还添加了一个hashCode()方法。
一个必须遵循的常用规则就是:如果两个对象是相等的,
那么它们必须产生相同的哈希码。因此,如果一个类重写了equals()方法,
通常也需要重写hashCode()方法。
7.8super关键字
this()代表本类中其他的构造函数 。
this.属性或者this.行为():
this.
this.代表着由该类产生的对象自身
this代表一个对象的本身。
this关键字:
访问本类的其他的属性
访问本类的其他方法
访问继承来自父类的财产(属性、行为)

Super.
super()刚代表父类的构造函数:
这个默认编译器会自动给我们添加子类构造的第一行。
super关键字:本类代表是继承于父类的部分财产

this.的作用范围:可操作本类的所有属性,
可以操作本类的所有方法,还可以操作来自于继承父类的财产(属性和行为)
super.的作用范围:只可以操作来自于继承父类的财产(属性和行为)

所以this.作用范围远大于super.的作用范围,所以咱们直接使用this.

super()代表父类的构造方法,这行代码必须要放置在第一行,
如果程序不显式写出,编译器也会默认添加上
每个对象都有一个对自身的引用,称为this引用。
当在一个类中,引用类本身的成员变量或方法时,可以显式地使用this引用。
类似地,
一个类可以使用关键字super,来显式地引用从父类继承的成员变量或方法。
我们可以把super看作是子对象对父对象的引用。
当子类在重写父类的方法时,如果需要调用父类中的该方法,就必须使用super关键字。
关键字super还有一个与方法重写无关的用法。
构造方法与继承
不像一个超类的成员,超类的构造方法不能被它的子类继承.
你必须为一个子类定义构造方法,或者使用缺省的构造方法

7.9final关键字
final类。一个类可以声明为最终类的。最终类不能被有子类。
final方法。一个方法可以声明为最终的。最终方法不能被重写。
变量不能被修改。
(1)final类

猜你喜欢

转载自blog.csdn.net/qq_43039235/article/details/82387541