核心内容:



package my;
public class MyTest {
public static void main(String[] args){
//eg 1:
Animal a=new Animal();
getShut(a);
//eg 2:
Animal d=new Dog();//向上转型,自然转型:但是d不可访问子类的新方法。
getShut(d);
//eg 3:
Dog f=new Dog();
getShut(f);
/* 1.eg1:表示编译时数据类型是Animal,运行时是Animal;;
eg2和eg3效果一样,都表示编译时数据类型是Animal,而运行时是Dog;
2.a instanceof <类名> :关键字适用于判断a是否是该类的实例类或子类实例
*/
}
public static void getShut(Animal an){
if(an instanceof Dog){
Dog t=(Dog) an;//强制型转换
System.out.println("it is instance!") ;
} else{
System.out.println("No");
}
}
};
class Animal{
String name;
void shut(){
System.out.println("wowowo");
}
};
class Dog extends Animal{
String name;
void shut(){
System.out.println("ahahahahahaa");
}
};
instanceof用于判断该对象是否属于本类实例或子类实例,让我们再次强调一次
public class MyTest {
public static void main(String[] args[]){
Animal a=new Animal();
getShut(a);
}
public static void getShut(Animal an){
if(an instanceof Dog){//显然。an是属于Animal类,即不是Dog类,也不是Dog的子类,它是Dog的父类Animal类
System.out.println("it is instance!") ;
}
else{
System.out.println("No");
}
}
}
class Animal{
String name;
void shut(){
System.out.println("wowowo");
}
}
class Dog extends Animal{
String name;
void shut(){
System.out.println("ahahahahahaa");
}
}