Java继承--覆盖

java中支持单继承。不直接支持多继承,但对C++中的多继承机制进行改良。

单继承:一个子类只能有一个直接父类。

多继承:一个子类可以有多个直接父类(java中不允许,进行改良)。不直接支持,因为多个父类中有相同成员,会产生调用不确定性。
           在java中是通过"多实现"的方式来体现。

java支持多层(多重)继承。

C继承B,B继承A。就会出现继承体系。

当要使用一个继承体系时:
1,查看该体系中的顶层类,了解该体系的基本功能。
2,创建体系中的最子类对象,完成功能的使用。

--------------------------------------------------

成员变量:

本类的成员变量和局部变量同名用this区分。子父类中的成员变量同名用super区分。

this和super的用法很相似。

this:代表一个本类对象的引用。

super:代表一个父类空间。

--------------------------------------------------

 成员函数:

当子父类中出现成员函数一模一样的情况,会运行子类的函数。这种现象,称为覆盖操作。

函数两个特性:
1,重载。同一个类中。overload
2,覆盖。子类中。覆盖也称为重写,覆写。override

覆盖注意事项:
1,子类方法覆盖父类方法时,子类权限必须要大于等于父类的权限。
2,静态只能覆盖静态,或被静态覆盖。

什么时候使用覆盖操作?

当对一个类进行子类的扩展时,子类需要保留父类的功能声明,但是要定义子类中该功能的特有内容时,就使用覆盖操作完成.

简言之,保留父类功能的同时对父类功能进行更新、扩展。

例:

 1 class Phone
 2 {
 3     void call()
 4     {}
 5     void show()
 6     {        
 7         System.out.println("number");
 8     }
 9 }
10 
11 class NewPhone extends Phone
12 {
13     void show()
14     {
15         System.out.println("name");  //新增了两个方法。
16         System.out.println("pic");  
17         super.show();  //继承了父类中的方法。
18     }
19 }

例:(不常用,面试考。)

 1 class Fu
 2 {
 3     private int num = 4;
 4 
 5     public int getNum()   //私有成员不能直接继承,通过public函数调用。
 6     {
 7         return num;
 8     }
 9 }
10 
11 
12 class Zi extends Fu
13 {
14     private int num = 5;
15 
16 
17     void show()
18     {
19         System.out.println(this.num+"....."+super.getNum()); //此处调用父类中私有的num。
20     }
21 }
22 
23 
24 class ExtendsDemo2 
25 {
26     public static void main(String[] args) 
27     {
28         Zi z = new Zi();
29         z.show();
30     }
31 }
原文地址:https://www.cnblogs.com/kkkky/p/6381552.html