【精选】java继承进阶,子类继承父类(内存图、内存分析工具)

 博主介绍

‍ 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~
✨主攻领域:【渗透领域】【应急响应】 【python】 【VulnHub靶场复现】【面试分析】
点赞➕评论➕收藏 == 养成习惯(一键三连)
欢迎关注一起学习一起讨论⭐️一起进步文末有彩蛋
作者水平有限,欢迎各位大佬指点,相互学习进步!


目录

前言

一、内存图

1、构造方法 继承(不管什么修饰符,子类都不能继承)

2、成员变量 继承(子类都可以继承)

继承的内存图:

3、成员方法 继承(虚方法表中可以继承)

内存分析工具


前言

  • 误区1:父类私有的东西,子类就无法继承
  • 误区2:父类中非私有成员,就被子类继承下来了

一、内存图

private 表示私有
public 表示非私有

【精选】java继承进阶,子类继承父类(内存图、内存分析工具)_第1张图片

1、构造方法 继承(不管什么修饰符,子类都不能继承)

下面代码中,创建的Z2对象,就会因为没有继承父类,产生报错

package demon1;

public class Test {
    public static void main(String[] args) {
        //利用空参构造创建子类对象
        Zi z1 = new Zi();

        //利用带参构造创建子类对象
        //Zi z2 = new Zi("zhangsan",23);
    }
}


class Fu{
    String name;
    int age;

    public Fu(){}
    public Fu(String name,int age){
        this.name = name;
        this.age = age;
    }
}

class Zi extends Fu{

    //如果一个类中没有构造方法,虚拟机会自动的给你添加一个默认的空参构造

}


【精选】java继承进阶,子类继承父类(内存图、内存分析工具)_第2张图片

2、成员变量 继承(子类都可以继承)

继承的内存图:
  • name和age因为被private修饰,所以不能被子类直接调用

【精选】java继承进阶,子类继承父类(内存图、内存分析工具)_第3张图片

3、成员方法 继承(虚方法表中可以继承)

  • 只有父类中的虚方法才能被子类继承

【精选】java继承进阶,子类继承父类(内存图、内存分析工具)_第4张图片

  • fushow2是private修饰的,所以不能传到z1中的虚方法表中

【精选】java继承进阶,子类继承父类(内存图、内存分析工具)_第5张图片

内存分析工具

import java.io.IOException;

public class Test {
    public static void main(String[] args) throws IOException {
       /* Zi z = new Zi();
        z.fuShow1();*/

        //把对象的地址值z以16进制的形式打在控制台上
        //System.out.println(Long.toHexString(VM.current().addressOf(z)));

        //因为内存分析工具需要程序不停止
       // Scanner sc = new Scanner(System.in);
        //sc.next();



    }
}


class Fu {
    private int a = 0x111;
    int b = 0x222;

    public  void fuShow1() {
        System.out.println("public --- FuShow");
    }

    private void fuShow2() {
        System.out.println("private --- FuShow");
    }
}

class Zi extends Fu {
    int c = 0x333;

    public void ziShow() {
        System.out.println("public --- ZiShow");
    }
}

  • jdk自带

【精选】java继承进阶,子类继承父类(内存图、内存分析工具)_第6张图片

你可能感兴趣的:(windows,linux系统开发,小白学JAVA,web,java,开发语言,前端,linux,继承,成员变量,流量运营)