java 动手动脑之父子继承

1.构造函数的主要作用是什么?
作用:在创建对象时初始化对象,为对象成员变量赋初值。
调用时:子类——>父类——>祖类
输出时:祖类——>父类——>子类
在子类调用构造函数时必须调用父类的构造函数,调用是逐级往上调用,输出时就逐级从最高往下输出。
2.自行编写代码测试以下特性:在子类中,若要调用父类中被覆盖的方法,可以使用super关键字.

 1 public class FatherAndSon {
 2 
 3     public static void main(String args[]) {
 4         FatherAndSon s=new FatherAndSon();
 5         s.Test();
 6     }
 7     public void Test() {
 8         Son s=new Son();
 9         s.test();
10         
11     }
12     class Father {//声明父类
13         public void test() {//声明父类中的测试代码
14             System.out.println("father");
15             
16         }
17     }
18     class Son extends Father{//声明子类,并继承父类
19         public void  test() {//覆盖父类的测试类
20             System.out.println("son");
21             super.test();//使用super调用父类的测试类
22         }
23     }
24 }

当super被注释时的输出,父类的测试类没有输出,也就没有被调用。

调用super时的输出,明显父类的测试类也被调用了,说明当父类中的方法被覆盖的时候,要想访问父类中方法就要使用super字符。

3.

class Mammal{}
class Dog extends Mammal {}
class Cat extends Mammal{}
public class TestCast
{
 public static void main(String args[])
 {
  Mammal m = null;
  Dog d=new Dog();
  Cat c=new Cat();
  m=d;//把子类赋予给父类不会出错
  //d=m; //将父类赋给子类会报错
  d=(Dog)m;//先强制转化为父类再赋值不会报错
  //d=c;
  c=(Cat)m;
 }
}

 

引起编译错误的是,因为类型不匹配,所以系统提示编译错误。

 

  

 

posted @ 2018-11-01 23:51  masuo  阅读(321)  评论(0编辑  收藏  举报