方法重写的应用
当子类需要父类的功能,而功能的主体子类还有自己特有的内容时,可以重写父类中的方法,这样,即沿袭了父类的功能,又定义了子类自己特有的内容。
1 /*
2 方法重写:子类中出现了和父类中方法声明一模一样的方法(方法名、参数列表和返回值类型都一样),也被称为方法覆盖、方法复写。
3
4 方法重载:本类中出现的方法名一样,参数列表不同,与返回值无关的方法。
5
6 子类的成员方法名称和父类中的成员方法名称一样时,这个怎么访问呢?
7 通过子类对象访问一个成员方法的查找顺序:
8 1.在子类的成员方法中找,有就使用。
9 2.在父类的成员方法中找,有就使用。
10 3.都找不到,就报错。
11
12 方法重写的应用:
13 当子类需要父类的功能,而功能的主体子类还有自己特有的内容时,可以重写父类中的方法,
14 这样,即沿袭了父类的功能,又定义了子类自己特有的内容。
15
16 案例:
17 A:定义一个手机类。
18 B:通过研究,我发明了一个新手机,这个手机的作用是在打完电话后,可以听天气预报。
19 按照我们基本的设计,我们把代码给写出来了。
20 但是呢?我们又发现新手机应该是手机,所以,它应该继承自手机。
21 其实这个时候的设计,并不是最好的。
22 因为手机打电话功能,是手机本身就具备的最基本的功能。
23 所以,我的新手机是不用在提供这个功能的。子类注释掉打电话的功能,
24 但是,这个时候,打电话功能就没有了。这个不好。
25 最终,还是要加上这个功能。
26 由于它继承了手机类,所以,我们就直接使用父类的功能即可。
27 那么,如何使用父类的功能呢?通过super关键字调用即可。
28 */
29
30 class Phone {
31 public void call(String name) {
32 System.out.println("给"+name+"打电话");
33 }
34 }
35
36 class NewPhone extends Phone {
37 public void call(String name) {
38 //System.out.println("给"+name+"打电话");
39 super.call(name);//继承父类的功能
40 System.out.println("可以听天气预报了");//子类自己特有的功能。
41 }
42 }
43
44 class ExtendsDemo9 {
45 public static void main(String[] args) {
46 NewPhone np = new NewPhone();
47 np.call("林青霞");
48 }
49 }