答案:
晕,A转为B有三种情况
1.不可能
Integer --> String
2.一定可以
String ---> Object
3.有可能(运行是才知道)
Object ----> String
上面的类型都是编译时类型!
前两者都是编译时就知道,所有我们不会用它
但是编译器好像只阻止了第一种情况,而没有阻止第二种情况,就相当域我们写if(1==1) 也不会出错.
如果在return 语句后还有代码,一般编译不错,但是如果改为
if(ture) return; 就可以编译通过了.
书上复习题:
package Review09;
public class Review_9_8 {
public static void main(String[] args){
GoldenDelicious fruit=new GoldenDelicious();
Orange orange=new Orange();
// System.out.println((fruit instanceof Orange));//A转为B有三种情况
System.out.println((fruit instanceof Apple));
System.out.println((fruit instanceof GoldenDelicious));
// System.out.println((fruit instanceof Macintosh));//一定不可能
System.out.println((orange instanceof Orange));//一定能
System.out.println((orange instanceof Fruit));
// System.out.println((orange instanceof Apple));
fruit.makeApple();
// orange.makeApple();
orange.makeOrangeJuice();
// fruit.makeOrangeJuice();
//测试,这个就可以了,是false
Fruit fruit1=new Fruit();
System.out.println((fruit1 instanceof Apple));//有可能
}
}
class Fruit{
public Fruit(){
}
}
class Orange extends Fruit{
public void makeOrangeJuice(){
System.out.println("make orange juice");
}
}
class Apple extends Fruit{
public void makeApple(){
System.out.println("Make a Apple");
}
}
class GoldenDelicious extends Apple{
}
class Macintosh extends Apple{
}