Chinaunix首页 | 论坛 | 博客
  • 博客访问: 16496018
  • 博文数量: 5645
  • 博客积分: 9880
  • 博客等级: 中将
  • 技术积分: 68081
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-28 13:35
文章分类

全部博文(5645)

文章存档

2008年(5645)

我的朋友

分类:

2008-04-28 21:38:35

下载本文示例代码
  类的继承机制使得子类可以使用父类的功能(即代码),并且子类也具有父类的类型。下面介绍类在继承关系上的初始化的顺序问题。   示例1: class SuperClass { SuperClass() { System.out.println("SuperClass constructor"); } } public class SubClass extends SuperClass { SubClass() { System.out.println("SubClass constructor"); } public static void main(String[] args) { SubClass sub = new SubClass(); } } 输出结果: SuperClass constructor SubClass constructor   在子类中只实例化了一个子类对象。从输出结果上看,程序并不是一开始就运行自己的构造方法,而是先运行其父类的默认构造方法。注意:程序自动调用其父类的默认构造方法。   示例2: class SuperClass { SuperClass(String str) { System.out.println("Super with a string."); } } public class SubClass extends SuperClass { SubClass(String str) { System.out.println("Sub with a string."); } public static void main(String[] args) { SubClass sub = new SubClass("sub"); } }   在JDK下编译此程序不能成功。正如上例中说的:程序在初始化子类时先要寻找其父类的默认构造方法,结果没找到,那么编译自然不能通过。   解决这个问题有两个办法:   1.在父类中增加一个默认构造方法。   2.在子类的构造方法中增加一条语句:super(str); 且必须在第一句。   这两种方法都能使此程序通过编译,但就本程序来说运行结果却不相同。   第1种方法的运行结果是:  Sub with a string.   第2种方法的运行结果是: Super with a string. Sub with a string.   第2种解决方法实际上是指定编译器不要寻找父类的默认构造方法,而是去寻找带一个字符串为参数的构造方法。 共2页。 1 2 :   类的继承机制使得子类可以使用父类的功能(即代码),并且子类也具有父类的类型。下面介绍类在继承关系上的初始化的顺序问题。   示例1: class SuperClass { SuperClass() { System.out.println("SuperClass constructor"); } } public class SubClass extends SuperClass { SubClass() { System.out.println("SubClass constructor"); } public static void main(String[] args) { SubClass sub = new SubClass(); } } 输出结果: SuperClass constructor SubClass constructor   在子类中只实例化了一个子类对象。从输出结果上看,程序并不是一开始就运行自己的构造方法,而是先运行其父类的默认构造方法。注意:程序自动调用其父类的默认构造方法。   示例2: class SuperClass { SuperClass(String str) { System.out.println("Super with a string."); } } public class SubClass extends SuperClass { SubClass(String str) { System.out.println("Sub with a string."); } public static void main(String[] args) { SubClass sub = new SubClass("sub"); } }   在JDK下编译此程序不能成功。正如上例中说的:程序在初始化子类时先要寻找其父类的默认构造方法,结果没找到,那么编译自然不能通过。   解决这个问题有两个办法:   1.在父类中增加一个默认构造方法。   2.在子类的构造方法中增加一条语句:super(str); 且必须在第一句。   这两种方法都能使此程序通过编译,但就本程序来说运行结果却不相同。   第1种方法的运行结果是:  Sub with a string.   第2种方法的运行结果是: Super with a string. Sub with a string.   第2种解决方法实际上是指定编译器不要寻找父类的默认构造方法,而是去寻找带一个字符串为参数的构造方法。 共2页。 1 2 : 下载本文示例代码


JAVA技术专题综述之构造方法篇JAVA技术专题综述之构造方法篇JAVA技术专题综述之构造方法篇JAVA技术专题综述之构造方法篇JAVA技术专题综述之构造方法篇JAVA技术专题综述之构造方法篇JAVA技术专题综述之构造方法篇JAVA技术专题综述之构造方法篇JAVA技术专题综述之构造方法篇JAVA技术专题综述之构造方法篇JAVA技术专题综述之构造方法篇JAVA技术专题综述之构造方法篇JAVA技术专题综述之构造方法篇JAVA技术专题综述之构造方法篇JAVA技术专题综述之构造方法篇
阅读(117) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~