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));

           }

    }

    截图:

     

     

     

     

  • 相关阅读:
    1020. Tree Traversals
    1001. A+B Format
    centos 各类无线网卡编译
    vim 详细配置 超全
    深夜复习strcpy函数原型竟然暗藏着这么多玄机
    第一篇博客
    strcat函数使用中出现的问题
    strcpy与strncpy工作方式及其区别
    strcpy与面试官
    linux下多线程编程
  • 原文地址:https://www.cnblogs.com/bailanglang/p/6053673.html
Copyright © 2011-2022 走看看