核心内容:
主要介绍instanceof的使用,和父类与子类的转换关系;
<父类名> 父类对象=子类对象:表示父类的对象指向子类对象;这是向上转型;
<子类名> 子类对象=(<子类名>)父类对象:表示子类对象指向父类,这是一种强制型转换
<父类名> 父类对象=子类对象:表示父类的对象指向子类对象;这是向上转型;
<子类名> 子类对象=(<子类名>)父类对象:表示子类对象指向父类,这是一种强制型转换
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");
}
}