父类和子类的关系

1.什么是父类和子类?
简单来说当存在一个类名为Father,这时,如果我们使用关键字extends,class写出下面语句:

class Son extends Father{
.....
}

上面构造的是一个名为Son的新类,和直接用class Son{}不同,它继承了Father类,也就是说Son是Father的子类,Father是Son的父类。

2.子类继承了父类的什么?
我们知道类的两个重要的成员:变量和方法。父类有自己的变量和方法,而子类继承了父类的成员,不仅拥有自己的变量和方法,而且也拥有父类的变量和方法。子类可以直接使用继承的成员。我们都知道类是通过它的构造方法来为自己分配变量内存的,由于子类继承了父类,所以子类的构造方法会先调用父类的构造方法,然后再用自己的构造法方法。(但这并不是继承,即子类不继承父类的构造方法)
例子:

public class Father{
    int money = 1000000;
    void fight(){
    System.out.println("I will kill you")
    }
}

class Son extends Father{
     int weight = 10;
}

上面一段代码,Son继承了Father的money变量和fight方法。相当于Son里存在:

int money = 1000000void fight(){
    System.out.println("I will kill you")
    }

3.但继承也是有限制的
(1)子类和父类在同一包中的继承性:除了private成员变量和方法,其他的都继承了。
(2)子类和父类不在同一包中:子类只继承父类的protected和public成员。(这里protected和友好类的差别出现了)

4.类的树形结构
类似于:
在这里插入图片描述

其中Object是系统默认的祖先类,即它是任何一个类的祖先类。K是B的子孙类,他们之间也存在继承关系。

5.protected的进一步说明
如果D类在它身中创建了一个对象,那么该对象总是可以通过“.”运算符来访问继承的或者自己定义的protected变量和方法,但是如果在其他类中用D类创建了一个对象,那么该对象访问D类的protected变量和方法的权限如下:
(1)对于子类D自己声明的protected成员变量和方法,只要其他类和D类在同一个包中,那么该对象就可以访问这些protected变量和方法。
(2)对于D从父类继承的protected变量和方法,那么只要其他类和D的父类在同一个包中,那么该对象就可以访问这些protected变量和方法。

以上内容包含个人的学习总结,如存在不合理的地方,欢迎大家指出,相互学习。

发布了35 篇原创文章 · 获赞 0 · 访问量 1305

猜你喜欢

转载自blog.csdn.net/c1776167012/article/details/102758293