package verify;
public class SameFieldInGeneric extends SuperClass{
public String field = "subClassField";
public static void main(String[] args) {
// TODO Auto-generated method stub
SameFieldInGeneric subObject = new SameFieldInGeneric();
//subClassField
System.out.println("最初始的属性 = " + subObject.field);
SuperClass supObject = subObject;
//superClassField
System.out.println("转换为父类后的属性 = " + supObject.field);
SameFieldInGeneric subObject2 = (SameFieldInGeneric) supObject;
//subClassField
System.out.println("再次转换回子类后的属性 = " + subObject2.field);
System.out.println();
/* 实际情况中,属性不太可能是public的
基本是通过get方法获取的,此时重名必须得重写get方法
这样结果就都是子类的真实属性了subClassField
*/
System.out.println("方法获取的:最初始的属性为 " + subObject.getField());
System.out.println("方法获取的:转换为父类后的属性为 " + supObject.getField());
System.out.println("方法获取的:再次转换回子类后的属性为" + supObject.getField());
}
public String getField() {
return field;
}
}
class SuperClass {
public String field = "superClassField";
public String getField() {
return field;
}
}
package classAndGeneric;
/*
* 静态方法会被子类继承
* 但不存在动态绑定,访问的是定义的对象变量所在的类或类本身的方法
*/
public class StaticMethodInherit extends SuperClass {
public static void main(String[] args) {
// TODO Auto-generated method stub
staticMethod(); // sub static method.....
StaticMethodInherit sub = new StaticMethodInherit();
// 父类的被隐藏,和通过类直接访问效果相同
sub.staticMethod(); // sub static method.....
SuperClass sup = sub;
// 父类的被激活
sup.staticMethod(); // super static method......
}
public static void staticMethod() {
System.out.println("sub static method.....");
}
}
class SuperClass {
public static void staticMethod() {
System.out.println("super static method......");
}
}