zoukankan      html  css  js  c++  java
  • Java接口与继承动手动脑

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

    运行 TestInherits.java 示例,观察输出,注意总结父类与子类之间构造方法的调用关系修改Parent构造方法的代码,

    显式调用GrandParent的另一个构造函数,注意这句调用代码是否是第一句,影响重大!

    代码:

    class Grandparent {

        public Grandparent() {  System.out.println("GrandParent Created.");

        }

        public Grandparent(String string) {

            System.out.println("GrandParent Created.String:" + string);

        }

    }

    class Parent extends Grandparent {

        public Parent() {                          

             //super("Hello.Grandparent.");

            System.out.println("Parent Created");

            //super("Hello.Grandparent.");

        }

    }

    class Child extends Parent {

        public Child() {

            System.out.println("Child Created");

        }

    }

    public class TestInherits {

        public static void main(String args[]) {

            Child c = new Child();

        }

    }

    结论:

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

    必须在第一句,因为此句为显式调用父类构造器,子类构造方法运行之前必须调用父类构造方法

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

    原因:构造函数的主要作用是创建对象时,初始化对象。在Java的继承体系中,父类必须先于子类进行初始化,正所谓的有父才有子。不能

    反过来,反过来就违反了逻辑。所以子类必须保证父类进行初始化。例如:1.若父类没有默认的构造器,则必须在子类的构造器中显式调

    用父类的构造器super()。2.若未显式调用,那么所有的子类构造器都会调用父类的默认构造器。

     

    2.请自行编写代码测试以下特性(动手动脑):

    在子类中,若要调用父类中被覆盖的方法,可以使用super关键字。

    源代码:

    package 方法覆盖super;

    //在子类中调用父类中被覆盖的方法使用super关键字。

    //LangLangBai,2016.11.11

    public class Superlei {

        public static void main(String []args)

        {

           Son s=new Son();   

           s.show(1,2);

         }

    }

    class Person

    {

             void show(int a,int b)

             {System.out.println("父类a+b和为:"+(a+b));}

    }

    class Son extends Person

    {

         

         void show(int a,int b)

         {

           super.show(a,b+1);

           System.out.println("子类a+b和为:"+(a+b));

           }

    }

    截图:

     

     

     

     

  • 相关阅读:
    数据结构第四篇——线性表的链式存储之双向链表
    基本概念之引用赋值需要注意什么?
    基本概念之将引用作为函数的参数有哪些特点?
    基本概念之什么是引用?
    基本概念之模板类有什么优势?
    我的第一篇博文
    为CentOS 6 配置本地YUM源
    为CentOS 6 配置本地YUM源
    poj 1990 MooFest
    [置顶] 学生信息管理系统“重复设置”问题
  • 原文地址:https://www.cnblogs.com/bailanglang/p/6053673.html
Copyright © 2011-2022 走看看