美文网首页
Java继承

Java继承

作者: MacroZH | 来源:发表于2018-05-04 12:04 被阅读0次

1 父类使用子类属性问题

一般来说子类可以使用父类非private定义的字段,但是父类是不能使用子类的字段的。
例如定义一个父类SuperClass,一个子类SubClass,都拥有相同的字段name

public class SuperClass {

    private String name="super";

    protected  void printName()
    {

        System.out.println(name);
    }

}

public class SubClass  extends SuperClass{
    private String name="sub";

    @Override
    protected  void printName()
    {
        System.out.println(name);
    }

    public  static void main(String[] args)
    {
        SubClass subClass=new SubClass();
        subClass.printName();

    }

}

子类复写父类printName方法。执行Main方法后打印如下:

sub

此时调用子类的printName()方法,输出子类的name字段。当注释掉子类复写方法pritName()时。

public class SubClass  extends SuperClass{
    private String name="sub";

//    @Override
//    protected  void printName()
//    {
//        System.out.println(name);
//    }

    public  static void main(String[] args)
    {
        SubClass subClass=new SubClass();
        subClass.printName();

    }
}

此时输出结果:

super

调用父类的printName()方法打印父类的name字段,但是有时候我们希望在父类中操作子类的字段。那么可以将字段的创建交给子类来完成。

public abstract class SuperClass {

    private String name;

    public SuperClass( ) {
        name=createName();
    }

    protected  void printName()
    {

        System.out.println(name);
    }

    abstract protected  String createName();

}



public class SubClass  extends SuperClass{
    private String name;
    
    @Override
    protected String createName() {
        name="sub";
        return name;
    }

    public  static void main(String[] args)
    {
        SubClass subClass=new SubClass();
        subClass.printName();

    }

}

当创建subClass时候会执行SuperClass的构造函数,此时会调用createName()方法,执行subClass的createName()方法将子类的name引用返回交给父类。这时父类的name字段就指向子类的name字段。
此时输出结果为:

sub

相关文章

  • Java继承

    一、Java继承详解 Java继承目录:1.为什么要”继承“?2.继承的类型2.1 单继承2.2 多重继承2.3 ...

  • Java继承

    Java继承 一、继承类型 Java不支持多继承,但是支持多重继承 二、继承的特性 子类拥有父类非 private...

  • JAVA语言第二课

    JAVA面向对象——四大特征 继承篇——extendsJava 继承继承的概念继承是java面向对象编程技术的...

  • java培训专家介绍java的特性之:继承

    java培训专家介绍java的特性之:继承 什么是继承?java特性继承又是什么?在线教育平台专家为你解答! 多个...

  • JAVA 核心笔记 || [7] 继承

    继承 被继承的类为 基类 或者 父类 类 只能单继承 不可同时继承多类 Animal.java Dog.java ...

  • 继承

    java中对于继承,java只支持单继承。java虽然不直接支持多继承,但是可实现多接口。 1:成员变量。当子父类...

  • 2017-12-29

    Java学习日记(4) 主要谈一下——继承extends 个 Tips : Java不像c++,Java是单继承(...

  • JAVA核心技术总结(五六章)继承&接口与内部类

    第五章 继承 在Java中,所有的继承都是公有继承,没有C++的私有继承和保护继承 Java同C++一样,子类不能...

  • Java初级笔记No.3(更新中)

    2018.7.26 1、Java中的继承 Java中使用extends关键字来说明继承关系。 2、继承的特性 ja...

  • Java中的继承

    Java中的继承 Java 继承 什么是继承 继承是用来描述“is-a”的关系;如果说两个对象A和B,若可以描述成...

网友评论

      本文标题:Java继承

      本文链接:https://www.haomeiwen.com/subject/vzkdrftx.html