课堂继承与多态作业

问题一:

 

 

解决:

之所以调用父类的构造方法是因为在父类中,可能存在私有属性需要在构造方法内初始化,不能反过来,因为子类继承父类,子类的构造方法在第一句会隐式的调用父类的构造方法,完成初始化。

问题二:

 

 

解决

判断第二个和第四个出现错误

运行结果截图:

 

 

经过运行,第二个,第四个和四五个不能正常运行

原因:

子类对象可以直接赋给基类变量。

基类对象要赋给子类对象变量,必须执行类型转换

 第二个需要强制转换为子类,第四个子类之间不能转换,第五个之前m已经转化为Dog类,再转化为子类Cat与第四个错误相同,犯了子类之间转化的错误

问题三:

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

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

解决

源代码:

package com.test;

public class Test8 {

  public static void main(String[] args) {

    // TODO 自动生成的方法存根

  Children child=new Children();

  child.dowork();

   }

 }

class Parents

{

  public void dowork()

  {

    System.out.println("父类方法");      //定义父类方法

  }

}

class Children extends Parents

{

  public void dowork()                   //定义子类方法

  {

  super.dowork();                   //调用被覆盖的父类方法

  System.out.println("子类方法");

  }

}

运行结果截图:

 

 

问题四:

 

 

解决:

预想结果:

Parent.printValue(),myValue=100

Child.printValue(),myValue=200

Child.printValue(),myValue=200

Child.printValue(),myValue=200

Child.printValue(),myValue=201

运行结果截图:

 

转化为哪个类,就调用那个类的对应方法,++后缀运算符在输出后再自动加一

posted @ 2017-11-09 12:03  猫五  阅读(194)  评论(0编辑  收藏  举报