假设,A是B的父类,当用子类创建一个对象,并把这个对象的引用放到父类的对象中时,如:
//方法1:
A a;
a = new B();
//方法2:
A a = new B();
//方法3:
A a;
B b = new B();
a = b;
这时,称对象a是对象b的上转型对象。
简单来说,就是“以父之名,子类创建”
举个例子:
创建一个Census类:
public class Census{
String idno;
String name;
String sex;
String loedu;
int age;
public Census() {
//无参的构造方法
}
public Census(String name,String idno,String sex,int age,String loedu) {
//带参的构造方法
this.name = name;
this.idno = idno;
this.sex = sex;
this.age = age;
this.loedu = loedu;
}
void showMess(){
System.out.println("显示普查信息");
}
}
创建一个子类 FujianQZ:
public class FujianQZ extends Census{
String region;
public FujianQZ() {
// 无参的构造方法
super();//调用父类的构造方法(可省略)
}
public FujianQZ(String region,String name,String idno,String sex,int age,String loedu) {
// 有参的构造方法
super(name,idno,sex,age,loedu);
this.region = region;
}
void showMess(){
super.showMess();//调用父类的构造方法
System.out.print(region+":");
System.out.println(idno+" "+name+" "+sex+" "+age+" "+loedu);
}
}
测试类代码为:
public class MainClass{
public static void main(String args[]){
FujianQZ fjqz=new FujianQZ("福建泉州", "张三", "3505*****1234", "男", 18,"本科");
fjqz.showMess();//调用FujianQZ的showMess
Census census = new FujianQZ("福建泉州", "李四", "3505*****1235", "女", 20,"研究生");
census.showMess();//调用FujianQZ的showMess,而不是Census的showMess
}
}
测试类中的代码 census.showMess();结果为:
显示普查信息
福建泉州:3505*****1235 李四 女 20 研究生
而不是
显示普查信息
这篇博客介绍了Java中的多态性和继承概念,通过创建Census类及其子类FujianQZ的例子,展示了如何使用父类引用创建并调用子类对象的方法。在测试类中,`census.showMess()`调用了FujianQZ的`showMess()`方法,展示了对象的上转型对象特性。
1680

被折叠的 条评论
为什么被折叠?



