Java的继承与内存结构(上)(六)

xiaoxiao2025-04-07  14

目录

一、 继承概念

1、语法

2、 实例

 3、 总结

二、 继承的内存结构


一、 继承概念

继承是面向对象最显著的一个特性。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。

通俗一点:描述事物的时候,如果发现这几个类有重复的属性和方法,就可以采用继承的方式来设计。

1、语法

在Java中,使用关键字extends来继承!

class 子类   extends 父类 {

           子类属性;

            子类方法;

}

特点:子类会把父类的所有属性和方法继承下来(暂时不考虑final)。

2、 实例

请看下面举的栗子就啥都明白了~

class Teacher{ String name; int age; public void sleep(){ System.out.println("老师正在睡觉...."); } } /** * 定义子类 */ class MathTeacher extends Teacher{ public void teachMath(){ System.out.println("数学老师在上课....."); } } class ChineseTeacher extends Teacher{ public void teachChinese(){ System.out.println("语文老师在上课..."); } } class ExtendsDemo { public static void main(String[] args) { MathTeacher mt =new MathTeacher(); mt.name="数学老师"; mt.age=28; mt.teachMath(); mt.sleep(); System.out.println("我是"+mt.name+",我今年"+mt.age); System.out.println("----------------------------------"); ChineseTeacher ct = new ChineseTeacher(); ct.name="语文老师"; ct.age=50; ct.teachChinese(); ct.sleep(); System.out.println("我是"+ct.name+",我今年"+ct.age); } }

运行结果

 3、 总结

1、 如果父类中包含了某些类中的共同属性和行为,我们可以使用继承来设计程序。

2、子类使用extends关键字继承父类的共同属性意外,子类还可以有自己特有的属性或方法。

3、 父类更通用,子类更加具体。

4、 子类只能获得父类的非private的属性,如果想要继承就得提供公共的set和get的方法。私有的方法子类无法继承。

5、 在Java中只能做单继承(如,class A extends B{  } ,那什么叫多继承呢?如class A extends B,C{  })。

6、 Java支持多级继承(如 class A extends B{  }         class C extends B{   })。

继承的好处:提高了代码的复用性。

二、 继承的内存结构

下面就上面的实例分析。

和文件同名的类为主类,主类ExtendsDemo先进栈,main方法进栈。mt是MathTeacher的一个对象,mt指向堆中它自己所在的地址,然后找到在栈中的内存空间。当mt在找name这个属性的时候,会到栈中去找,当然这个name的属性并不存在0x666这个内存空间里面,然后会到父类中去找。在this里面有一个存在super、name属性等的实例,找到之后给name赋值“DJun”,mt找age也是相同的方法。之后加载teachMath到方法区,接着入栈。

转载请注明原文地址: https://www.6miu.com/read-5027678.html

最新回复(0)