class FatherClass{
public int value;
public void f(){
value=100;
System.out.println("FatherClass.value= "+value);
}
}
class ChildClass extends FatherClass{
public int value;
public void f(){
super.f();
System.out.println("ChildClass.value= "+value);
System.out.println(value);
System.out.println(super.value);
}
}
public class TestInherit{
public static void main(String[] args){
ChildClass cc=new ChildClass();
cc.f();
}
}
这个程序可以编译运行,但是我有个疑问,FatherClass和ChildClass二个类都没申明构造函数,那么new一个cc对象时,子类的构造的过程中必须调用其基类的构造方法,若子类构造方法中没有显式调用基类构造方法,而基类中又没有无参的构造方法,则编译出错,为什么这个程序可以编译啊?
public int value;
public void f(){
value=100;
System.out.println("FatherClass.value= "+value);
}
}
class ChildClass extends FatherClass{
public int value;
public void f(){
super.f();
System.out.println("ChildClass.value= "+value);
System.out.println(value);
System.out.println(super.value);
}
}
public class TestInherit{
public static void main(String[] args){
ChildClass cc=new ChildClass();
cc.f();
}
}
这个程序可以编译运行,但是我有个疑问,FatherClass和ChildClass二个类都没申明构造函数,那么new一个cc对象时,子类的构造的过程中必须调用其基类的构造方法,若子类构造方法中没有显式调用基类构造方法,而基类中又没有无参的构造方法,则编译出错,为什么这个程序可以编译啊?
解决方案 »
- 在一个对象不用的时候将它指向null的代码是不是多余?
- 帮我看看这段代码在运行时什么会抛出异常~
- 难道JAVA的出路只有JSP???
- 正则表达式的请教~
- 基础问题:final问题.高手指教!!谢谢!~~
- [求助]怎样用URLConnection 类,建立与http服务器的连接后,再检验http服务器返回的状态代码,如200,500,401用户名密码错误等?
- 那位大虾救救我,Java的java.security DES的密钥载入模式!? 在线等!!!!!
- 今天放帐
- 为什么我的j2se程序在本机上运行的字体正确,在其它机器上则是乱码呢?
- java中如何获得系统某一目录和其下的文件大小??
- 关于vector 中的一个问题
- Hibernate C3P0连接池问题?
cc.value调用的是子类的value.因为子类重新定义的value.即覆盖了基类的value.
package test;public class Sub extends Super{
int a = 1;
public Sub(){
System.out.println("Csub");
a = 0;
}
public void setA(int a) {
System.out.println("setsub");
this.a = a;
}
public static void main(String[] args) {
Sub sub = new Sub();
System.out.println(sub.a);
System.out.println(sub.getA());
Super sub1 = new Sub();
System.out.println(sub1.a);
System.out.println(sub1.getA());
}
}
class Super{
int a = 8;
public Super(){
System.out.println("Csupper");
a = 9;
setA(2);
}
public int getA() {
System.out.println("getsupper");
return a;
}
public void setA(int a) {
System.out.println("setsupper");
this.a = a;
}
}