当前位置: 技术问答>java相关
有关Java构造函数的问题之二——实例性
来源: 互联网 发布时间:2015-02-11
本文导语: Java的构造函数是用来实例化一个类的。那么对abstract类(不能被实例化的类)允许存在构造函数吗?如果允许存在,那么有什么意义呢? | 允许啊!抽象类的所有数据和方法不一定都不需要实...
Java的构造函数是用来实例化一个类的。那么对abstract类(不能被实例化的类)允许存在构造函数吗?如果允许存在,那么有什么意义呢?
|
允许啊!抽象类的所有数据和方法不一定都不需要实例化啊!抽象类的构造方法可以完成必要的初始化!它的子类就可以直接调用父类的构造函数了,然后再完成自己扩展的初始化啊,而且你的说法也不对啊,抽象类不是不能被实例化的类,而是不能“直接”实例化的类。还是给一个例子:
class test0{
public test0() {
System.out.println("test0");
}
}
abstract class test1 extends test0{
String ex1;
public test1() {
super();
ex1="ex1";
System.out.println("test1");
}
}
public class test extends test1{
String ex2;
public test() {
super();
ex2="ex2";
System.out.println("test");
}
public static void main(String args[]) {
test1 t=new test();
}
}
class test0{
public test0() {
System.out.println("test0");
}
}
abstract class test1 extends test0{
String ex1;
public test1() {
super();
ex1="ex1";
System.out.println("test1");
}
}
public class test extends test1{
String ex2;
public test() {
super();
ex2="ex2";
System.out.println("test");
}
public static void main(String args[]) {
test1 t=new test();
}
}
|
对于abstract类而言,并非所有方法都是抽象的。它可以有实在的数据和方法。
比如说消息这个抽象类,总有一个发送者,这个发送者是实际存在的,在消息的构造函数中就可以指定发送者,对吧?不管以后它的子类如何extends,总之都会有一个发送者的,因为是父类定义好了的,在子类的构造函数中super时就可以调用了。