继承和多态之动手动脑

Posted quxiangjia

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了继承和多态之动手动脑相关的知识,希望对你有一定的参考价值。

1.

package cs4;

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

      }
    public Parent(String string) {
        super("孙子们好!");
        System.out.println("Parent Created.String:"+string);
    }

}



class Child extends Parent 
{


    public Child()
     {
//        super("儿子们好!"); 
        System.out.println("Child Created");
//        super("儿子们好!"); 

      }

}



public class TestInherits 
{


    public static void main(String args[])
     {

            Child c = new Child();
    
  }

}

当调用超类时,如果代码不是第一行,则会报错,原因是先有基类,再生成子类,其次构造方法的作用是对象的初始化,所以必须先初始化基类,才能初始化子类。

所以得到结论,在子类的构造方法调用超类时,调用语句必须放在子类构造方法类的第一行

2.

package cs4;

class A{
    
}
public class ExplorationJDKSource {
public static void main(String[] args) {
    System.out.println(new A());
}

}

直接输出类的对象时,由于我没有覆盖toString这个方法,所以继承object里面的方法,所以输出结果是技术分享图片

类名[email protected]+随机字符

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

package cs4;

public class Fruit
{
        
    public String toString()
    {
        return "Fruit toString.";
    }
public String FathertoString() {
    return super.toString();
}
    public static void main(String args[])
    {
        Fruit f=new Fruit();
        System.out.println("f="+f);
//        System.out.println("f="+f.toString());
        System.out.println(f.FathertoString());
    }
}

技术分享图片

 

以上是关于继承和多态之动手动脑的主要内容,如果未能解决你的问题,请参考以下文章

动手动脑 - 继承与多态

06-继承与多态(动手动脑与验证)

继承与多态——动手又动脑

继承和多态的动手动脑

继承和多态中动手动脑

课程作业09:继承与多态课件中动手动脑的相关问题。