假设,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 研究生
而不是
显示普查信息