日期:2014-05-20  浏览次数:20727 次

关于继承,求指点
public class Cookie {
public Cookie(){
System.out.println("Cookie Constructor");

}
void bite(){
System.out.println("bite");
}

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub

}

}
public class Chocolate extends Cookie{
public Chocolate(){
System.out.println("I am chocolate");
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Chocolate dove=new Chocolate();

}
}
为什么把Cookie中的构造方法Cookie前面改成private就要报错?而且为什么输出结果是
Cookie Constructor
I am chocolate
继承到底是继承些什么?
本人小白 求高人指教

------解决方案--------------------
继承时,子类的构造方法需要直接或间接super()来调用父类的构造方法
------解决方案--------------------
你设置成private,子类 怎么初始化(父类) 构造啊?

------解决方案--------------------
在同一个包中子类自然继承了父类不是private的成员变量作为自己的成员变量,并且自然继承了父类中不是private的方法作为自己的方法,继承的成员变量或方法的访问权限不变。LZ很少看书哦
------解决方案--------------------
继承了基类的方法和成员变量,包括他的构造方法(但是那个只限于访问权限是public,protected的).
可见性修饰符决定了哪个变量和方法会被继承,保护可见性提供了允许继承的最好的封装可能性.
你改了private就访问不了了
还有一般来说,构造方法中的第一行应该用super引用调用其基类的构造方法,如果不存在这样的调用,java会在构造方法开始处自动调用super()
于是你的Chocolate类的构造方法就相当于多了行"super();".
public Chocolate(){ 
super();
System.out.println("I am chocolate"); 
}

学程序自己都得多看点书,多调试,没有谁开始就不是小白的……