今日写了一个程序,发现了一些问题:代码如下。public class 复习1 { public static void main(String[] args) { son s=new son();
System.out.println(s.b);
System.out.println(s.s);
s.print();
}
}class father{
public String s="mqslll";
public int b=1;
public void print(){
System.out.println(s);
}
}class son extends father{
public String s="lllmqs";
}当运行这个方法的时候,为什么输出的是父类的域呢??
s.print();
System.out.println(s.b);
System.out.println(s.s);
s.print();
}
}class father{
public String s="mqslll";
public int b=1;
public void print(){
System.out.println(s);
}
}class son extends father{
public String s="lllmqs";
}当运行这个方法的时候,为什么输出的是父类的域呢??
s.print();
子类的print()方法是继承到父类的,所以调用也是调用的父类
public void print(){
System.out.println(s); // 相当于this.s,即父类的"mqslll"
}
那个是属性不会出现多态的。多态可能要在去看看。
子类木有的的属性,从父类找,一直到Object,没有则为NULL
System.out.println(s.s);
这个子类有,就先访问自己的了,没有一直往上找
s.print();
没有重写这个方法,则访问父类的,父类里面是打印自己的属性,父类是不能访问到子类的属性的
* @param args
* @throws SQLException
*/
public static void main(String[] args) throws SQLException {
Son son = new Son();
System.out.println(son.s);
} }
class Father {
public String s = "father";
void print(){
System.out.println(s);
}
}class Son extends Father {
}
输出结果为:father
为什么会输出father,这难道不是属性继承吗?
(2)实例化子类,会递归分配所有父类的空间
(3)属性是静态绑定的,是绑定到类的。
class son extends father {
public String s = "lllmqs";
@Override
public void print(){
System.out.println(s);
}
}
1 lllmqs mqslll