• 04课堂动手动脑及动手实验


    动手实验1继承条件下的构造方法调用

    结论:通过 super 调用基类构造方法,必须是子类构造方法中的第一个语句

    思索:为什么子类的构造方法在运行之前,必须调用父类的构造方法?能不能反过来?为什么不能反过来

    结论:构造函数用来初始化对象,子类继承了父类的成员变量和方法,构造顺序是先有父类对象才能构造子类对象,否则先决条件不满足,就不能构造子类。反过来不行,因为父类不知道你子类中有什么,就不能进行构造。

    运行以下代码:

    class Parents{

        public int myValue=100;

        public void printValue() {

            System.out.println("Parent.printValue(),myValue="+myValue);

        }

    }

    class Childs extends Parents{

        public int myValue=200;

        public void printValue() {

            System.out.println("Child.printValue(),myValue="+myValue);

        }

    }

    public class ParentChildTextss{

        public static void main(String[] args) {

            Parents parent=new Parents();

            parent.printValue();;

            Childs child=new Childs();

            child.printValue();

           

            parent=child;

            parent.printValue();

           

            parent.myValue++;

            parent.printValue();

           

            ((Childs)parent).myValue++;

            parent.printValue();

           

        }

    }

    结果:

    总结:

    当子类与父类拥有一样的方法,并且让一个父类变量引用一个子类对象时,到底调用哪个方法,由对象自己的“真实”类型所决定,这就是说:对象是子类型的,它就调用子类型的方法,是父类型的,它就调用父类型的方法。

    如果子类与父类有相同的字段,则子类中的字段会代替或隐藏父类的字段,子类方法中访问的是子类中的字段(而不是父类中的字段)。如果子类方法确实想访问父类中被隐藏的同名字段,可以用super关键字来访问它。

    如果子类被当作父类使用,则通过子类访问的字段是父类的!

  • 相关阅读:
    设置Edittext全键盘
    Math中和角度,弧长,tan等相关的算法
    Android:TabLayout的一些设置
    Android;设置TextView加粗 代码设置
    Android:关于Edittext的一些设置
    Android:View颤抖的动画效果代码
    Android:dialog去除边框的实现(自带Style的padding)
    Android:自定义Dialog大小,显示圆角
    Android:EventBus
    SAS宏系统选项SYMBOLGEN MCOMPILENOTE MPRINT<NEST> MLOGIC(NEST)
  • 原文地址:https://www.cnblogs.com/haobox/p/13881275.html
Copyright © 2020-2023  润新知