您的位置:首页 > 编程语言 > Java开发

Java之对象转型

2012-11-13 19:55 246 查看
这一次谈一谈Java中对象转型的问题,在Java中引入继承机制就存在这一转换的问题。在Java中对象转型注意以下四点:

1.一个基类的引用类型变量可以指向其子类的对象;

2.一个基类的引用变量不能访问其子类对象新增加的成员(属性和方法);

3.可以使用 对象名 instanceof 类名 来判断该引用型变量所指向的对象是否属于该类或该类的子类;

4.子类的对象可以当做基类的对象来使用称作向上转型;反之称作向下转型;

下面用一个简单的Java程序来说明对象转型这个问题。(对象转型可以保证程序的可扩展性)

源程序:

class Animal{   // 定义动物类
String name;
Animal(String name) {
this.name = name;
}
}

class Dog extends Animal{  // 定义狗类,继承自动物类
String furcolor;
Dog(String name,String furcolor) {
super(name);
this.furcolor = furcolor;
}
}

class Cat extends Animal{  // 定义猫类,继承自动物类
String eyecolor;
Cat(String name, String eyecolor){
super(name);
this.eyecolor = eyecolor;
}

}
public class datatest {  // 测试类
public static void main(String[] args) {

datatest test = new datatest(); // 定义一个测试类
Animal a = new Animal("animal"); // 定义一个动物类
Dog d = new Dog("bigyellow", "yellow"); // 定义一个狗类
Cat c = new Cat("Caddy", "blue"); // 定义一个猫类
// 3次调用测试类的f方法,其中参数分别为动物类、狗类、猫类的对象
test.f(a);
test.f(d);
test.f(c);
}

public void f(Animal a){
System.out.println("name: " + a.name);
if(a instanceof Dog){
Dog d = (Dog)a;
System.out.println("furcolor: " + d.furcolor);
} else if(a instanceof Cat){
Cat c = (Cat)a;
System.out.println("eyecolor: " + c.eyecolor);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: