首页 > 其他 > 详细

第六章 动手实验

时间:2015-11-08 14:28:31      阅读:292      评论:0      收藏:0      [点我收藏+]

技术分享

package jicheng;

 

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

   //子类构造方法的第一句,super指父类,之前之后的区别查、发博客。   

   }

 

   }

 

 

   class Child extends Parent {

 

     

    public Child() {

          

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

      

   }

 

   }

 

 

   public class TestInherits {

 

      

   @SuppressWarnings("unused")

   public static void main(String args[]) {

          

   Child c = new Child();

      

   }

   }

                       

在JAVA中,我们通常把C中的函数叫做方法。对于子类调用父类的构造方法可以做出如下解释: 子类无条件地继承父类的不含参数的构造方法。
如果子类自己没有构造方法,则它将继承父类的无参数构造方法作为自己的构造方法;如果子类自己定义了构造方法,则在创建新对象时,它将先执行继承自父类的无参数构造方法,然后再执行自己的构造方法。
对于父类含参数的构造方法,子类可以通过在自己的构造方法中使用 super 关键字来调用它,但这个调用语句必须是子类构造方法的第一个可执行语句。
如果父类有不带参数的构造方法,或者父类没有任何构造方法(也就是说有缺省构造方法),那么子类可以不显式调用,子类会自动调用super();

如果父类有带参数的构造方法,却没有不带参数的构造方法,那么如果子类没有显式调用父类构造方法,那么编译会报错。

子类转换成父类:可以。 
父类转换成子类:不可以。
如果父类对象的引用指向的实际是一个子类的对象,那么父类对象的引用可以强制转化成子类对象的引用。如: 
Parent p=new Son() 
Son s=(Son)p; --正确
Parent p=new Parent() 
Son s=(Son)p; --错误
因为继承的概念就是子孙类会越来越比祖先类详细,所以可以将子孙类强制转换成祖先类,因为祖先有的行为子孙类示例都有了(重新定义的或者是默认的);但是当将祖先类示例强制转换成子孙类示例的时候,一些子孙类有的行为祖先是没有的(即使的是默认的实现也没有)。

 

第六章 动手实验

原文:http://www.cnblogs.com/94qq/p/4946859.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!