public class DemoParent {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class DemoSon extends DemoParent {
private String name;
private String age;
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class MainClass {
/**
* @param args
*/
public static void main(String[] args) {
/**
* 此处dp就是父类的引用,而后面new的对象就是子类的对象.
*
* 通俗一点说,就是父类的范围更大,子类可以属于父类.
*
* 比如,你有一个哥哥,你和你哥哥都是继承于你爸爸.这时候,你爸爸的引用就可以指向你或者你哥哥,因为你们两个都是继承于他
*/
DemoParent dp = new DemoSon();
/**
* 此处ds就是子类的引用,而后面dp是父类的应用,子类引用要指向父类的对象,就必须要进行强制转换.
*
* 通俗一点就是说,你的引用现在要指向你爸爸的引用,要进行强转,因为你爸爸的引用可以指向你的对象,也可以指向你哥哥的对象,
* 也可以指向他自己的对象,所以,现在你要引用一个范围比你大的对象的引用,也就是你要引用你爸爸的引用,就要强制转换成你自己的对象类型.
*/
DemoSon ds = (DemoSon) dp;
System.out.println(ds.getName());
/**
* 总结:父类对象引用子类对象,不需要强制转换,子类对象要引用父类对象,就要先进行强制转换.
*/
}
}
|