Java 构造函数不可以继承,因此不能被重写,但可以被重载
2017-07-05 15:32
309 查看
Constructors 是在一个类创建的时候,用户创建类实例的时候被调用的特殊函数。它不是一个类的成员函数,它只能代表这个类本身。不可以创建一个继承的子类时,用父类的构造方法创建子类。public class main {public static void main (String[] arg){Son s = new Son (); // code 1}}class Father{public Father (){System.out.println("Father Construtor");}public Father (int x){System.out.println("Father Construtor " + x);}public void Father (){System.out.println("Father member function");}}class Son extends Father {public Son (){super(1);System.out.println("Son Construtor");}public void Father(){System.out.println("Inherited Father member function.");super.Father();}} 如果在创建子类的时候,使用父类的构造方法,写成这样:Son s = new Father ();这时候,编译器会报“Type mismatch: cannot convert from Father to Son” 错误。如果我们进行强制转换,如下:Son s = (Son)new Father ();这时候,编译器无法发现有什么错误,但是运行的时候会抛出下面异常。Exception in thread "main" java.lang.ClassCastException: Father cannot be cast to Son at main.main(main.java:4)父类无法转换成子类。其本质上,创建的仍是一个父类。如果在Son类中,增加父类constructor的函数。public Father (){}去尝试重载父类constructor,编译器会报错。 所以,编译器如果要构造一个类,必须要有和类名字相同的构造函数才可以。也就是说,构造函数是用来造唯一的东西的。不能用一个构造函数即造爸爸,又造儿子。这样身份就乱了。转载自:http://blog.csdn.net/yuxiaohui78/article/details/43887373理解 Java 构造函数不可以继承
相关文章推荐
- JAVA面试题解惑系列(九)——继承、多态、重载和重写
- JAVA——继承、多态、重载和重写
- JAVA面试题解惑系列(九)——继承、多态、重载和重写
- [Java]重载,重写以及继承,多态的区别
- java继承 构造器 重载,重写
- JAVA面试题解惑系列(九)——继承、多态、重载和重写
- java/构造函数,函数的重载,this的运用,构造函数的重载,静态函数,静态初始化,import,对象的继承,
- JAVA面试题解惑系列(九)——继承、多态、重载和重写
- C++和Java在 子类继承父类时,两者成员函数重写和重载的特性
- Java中类不能多重继承,接口可以多重继承
- Java中继承、多态、重载和重写
- java 继承 多态(override->重写(=覆盖)、overload->重载、polymorphism -> 多态)
- JAVA 子类继承父类的构造函数的重载
- JAVA——继承、多态、重载和重写---转
- 【转】JAVA面试题解惑系列(九)——继承、多态、重载和重写
- JAVA面试题解惑系列(九)——继承、多态、重载和重写
- java 中继承,组合,重载,重写的实现原理
- JAVA面试题解惑系列(九)——继承、多态、重载和重写
- [Java]重载,重写以及继承,多态的区别
- JAVA技术小提高(三)构造函数,重写方法,重载方法