【Java基础】Java子类能继承父类中的哪些内容

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档



提示:以下是本篇文章正文内容,下面案例可供参考

一、子类能从父类继承哪些东西

--------------私有 ------ 非私有
构造方法:不能-------- 不能
成员变量:能--------------能
成员方法:不能-----------能(在虚方法表中的成员方法都能继承,在成员方法的继承中有解释)

二、构造方法的继承

子类如果继承了父类的构造方法,会导致构造方法的名称与类名不一致,不符合构造方法的规则。

1.定义一个父类,并创建无参构造和带参构造的方法。

public class Person {
    int age;
    String name;

    public Person() {
    }

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

2.创建子类,然后创建一个测试类创建子类的对象

public class Student extends Person{

}
public class Test1 {
    public static void main(String[] args) {
        Student s1 = new Student();
        Student s2 = new Student(18,"123");
    }
}

3.创建s1的对象时没有报错,创建s2的对象时出现报错
如果一个类中没有构造方法,虚拟机会自动生成一个空参构造,所以在用空参的方式创建对象时没有报错。

三、成员变量的继承

1.分别创建子类,父类和测试类
(父类变量为非私有)

public class Fu {
    int age;
    String name;
}

(父类变量为私有)

public class Fu {
    private int age;
    private String name;
}

子类

public class Zi extends Fu{
    String work;
}

测试类

public class Test {
    public static void main(String[] args) {
        Zi zi = new Zi();
        zi.name="123";
        zi.age=11;
        zi.work="123";
    }
}

2.当父类中的变量为私有时在测试类中调用age和name时会报错
在这里插入图片描述

父类中的私有和非私有变量都能继承,在调用时先在右边找对应的变量,再到左边找对应的变量,当变量为非私有时左边的变量不能被找到,会出现报错。

四、成员方法的继承

Java底层会创建一个虚方法表,从最顶级的父类开始,把类中的非private,非static,非final的方法都提取到虚方法表中,子代会继承虚方法表,子代中符合条件的方法也会被提取到虚方法表中,在使用这些方法时只需要创建最底层子类的对象即可。

public class Fu {
    private void demo1(){
        System.out.println("Demo1");
    }
    public void demo2(){
        System.out.println("Demo2");
    }

}

当在测试类中创建子类对象并调用方法时只能调用demo2方法

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值