黑马程序员技术交流社区
标题:
我对父类的构造方法的理解,大家看理解对吗?
[打印本页]
作者:
whocases
时间:
2012-5-25 23:01
标题:
我对父类的构造方法的理解,大家看理解对吗?
构造方法的作用是在生成对象的时候,自动调用的方法,完成对象的初始化工作。
1.父类中如果没有写构造方法,myeclipse会自动生成一个默认的无参构造方法,而如果你写了带参数的构造方法,那么myeclipse不会自动生成默认无参构造方法的。
2.如果父类中的构造方法是带参数的(没有无参的构造方法),子类中的构造方法也必须与父类构造方法相对应。否则编译出错。(原因:父类长什么样子子类就的长什么样子)
3.如果父类中既有带参数的构造方法,也有无参的构造方法,子类中的构造方法可以有多个,也可以有一个,不过必须与父类的构造方法相对应,即样子一样(原因:父类有很多特点,子类可以全部继承,也可继承一部分)。
不知道我这样理解是否正确,高手指点!
作者:
张亭
时间:
2012-5-25 23:21
1.定义类时如果没写构造方法,类中都有一个隐式的无参构造方法,如果写了构造方法,就不会有隐式的无参构造方法,但这跟myeclipse没有关系;
2.如果父类中的构造方法是带参数的(没有无参的构造方法),子类的构造方法是可以无参的,例如
class A{
A(int i){
System.out.println("A--"+i);
}
}
class B extends A{
private static int j ;
B() {
super(j);
}
}
复制代码
子类的构造方法都隐式的调用父类的构造方法,这时只要显式的给出就可以了;
3,同2
个人拙见,望共勉之!
作者:
黑马11期李项京
时间:
2012-5-26 00:44
已经总结的很好啦{:soso_e179:}
作者:
徐炯
时间:
2012-5-26 09:16
个人觉得,父类的无参构造方法只要不被private修饰,任何时候都可以被子类构造方法复写,不管父类有没有其它的构造方法。构造方法是为了给与其对应的对象初始化。而子类的对象初始化时,必须先调用父类的构造方法进行第一次初始化(无参构造方法优先),然后调用自己的构造方法进行第二次初始化。下面的代码可以证明:
public class MS_Extends {
public static void main(String[] args) {
A a = new B();
a.Run();
}
}
class A{
public static int a = 0;
public int b = 0;
public void Run(){
System.out.println("■父类 - 普通函数");
}
public A(){
System.out.println("■父类 - 构造函数");
}
public A(int c){
System.out.println("■父类 - 构造函数a");
}
}
class B extends A{
public static int a = 0;
public int b = 0;
public void Run(){
System.out.println("◆子类 - 普通函数");
}
public B(){
System.out.println("◆子类 - 构造函数");
}
public B(int c){
System.out.println("◆子类 - 构造函数b");
}
}
输出结果:
■父类 - 构造函数
◆子类 - 构造函数
◆子类 - 普通函数
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2