版权声明:转载请注明出处。 https://blog.csdn.net/u014427196/article/details/49474241

继承:

增强代码复用性,使类和类之间产生关系,为多肽提供前提。
extends 关键字
使用类的继承时,查看体系顶层类,了解功能,创建子类对象完善功能的使用。

什么时候用继承?

类与类之间存在所属关系,定义继承。比如xx(狗)是yy(犬科动物)的一种。

java支持单继承,对c++多继承进行改良,支持多重继承。

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

class C extends A
{

}

多继承 :一个子类可以有多个父类。(java不允许,进行改良)
不直接支持愿意,会产生调用不确定性。

多重继承:比如B继承C,A继承B。

子父类变量间的关系

成员特点体现:
1 , 成员变量
若变量同名,则优先调用子类中变量。
同名时,用super区分父类。
和this用法相似。
this:代表本类对象引用
super:代表父类空间
子类不能直接访问父类私有变量内容。

2,成员函数
若函数同名,则优先调用子类中函数。这种现象称为覆盖操作。
函数两个特性:
1) 重载:同一类中
2) 覆盖:子类中
覆盖注意事项:
1),覆盖时,子类权限必须大于等于父类权限才可以引发覆盖。
public >无> private
2),static方法只能被static覆盖。

3,构造函数
子类构造对象时,访问子类构造函数时,父类也运行了。
子类构造函数第一行有隐式语句,super(),调用父类的(空参数)构造函数。
子类所以构造函数都会调用父类的空参数构造函数。
这里写图片描述
小例子:

package if_i_can_do;
import java.util.*;

class Person
{
    String name;
    int age;
    int num = 5;
    private int money = 1000000;
    void speak0()
    {
        System.out.println("peo!");
    }
}

class Student extends Person
{
    private int num = 4;
    Student(){}
    void speak()
    {
        System.out.println("stu!");
        System.out.println(num + "   " + num);//若变量同名,则优先调用子类中变量。
        System.out.println(this.num + "   " + super.num);//同名时,用super区分父类。
        //System.out.println(super.money); error:子类不能直接访问父类私有变量内容。
    }
}

class Worker extends Person
{
    Worker(){}
    void speak0()
    {
        System.out.println("66666!");
    }
    void speak()
    {
        System.out.println("work!");
    }
}


public class mfcheer 
{
     public static void main(String[] args) 
     {
         Student s1 = new Student();
         s1.speak0();
         s1.speak();

         Worker w1 = new Worker();
         w1.speak0();
         w1.speak();
     }  

}

运行结果:

这里写图片描述