您的位置:首页 > 编程语言 > Java开发

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 构造函数不可以继承
                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: