黑马程序员技术交流社区
标题:
抽象类中能有构造方法吗,怎样调用的?
[打印本页]
作者:
心?=忐§忑]
时间:
2014-3-31 15:47
标题:
抽象类中能有构造方法吗,怎样调用的?
abstract class A{
public A(){
System.out.println("父类-->A") ;
}
public abstract void fun();
};
class B extends A{
public B(){
System.out.println("子类-->B") ;
}
public void fun(){
System.out.println("覆写了父类的fun()方法") ;
}
}
public class print {
public static void main(String args[]){
B b = new B() ;
b.fun() ;
}
}
作者:
osully
时间:
2014-3-31 15:58
抽象类中的构造函数 是用来初始化 属性等等的
可以让子类直接使用
作者:
Aimer_WJY
时间:
2014-3-31 16:00
父类-->A
子类-->B
覆写了父类的fun()方法
从运行结果上就可以证明抽象类中是可以有构造方法的,但是是不能实例化对象的。
作者:
wconho
时间:
2014-3-31 17:15
调用子类构造方法都会调用它的直接父类的构造方法
使用new才会返回一个实例的引用,而抽象类是不能new的
调用子类构造方法时,先要调用了它的抽象父类的构造方法,然后初始化自己的成员变量
总之,构造方法是用来做初始化工作的,它并不会返回实例,所以抽象类中可以有构造方法,具体调用过程是子类构造方法调用父类构造方法,每个子类默认构造方法中都隐含着super()方法,对于子类有参数的构造方法,有super(参数)。
可以将代码改为下列形式,结果一样。
public class Print{
public static void main(String args[]){
B b = new B() ;
b.fun() ;
}
}
abstract class A{
public A(){
System.out.println("父类-->A") ;
}
// public abstract void fun();
};
class B extends A{
public B(){
super();//调用父类默认构造方法
System.out.println("子类-->B") ;
}
public void fun(){
System.out.println("覆写了父类的fun()方法") ;
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2