您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
javase第二季学习笔记-instanceof关键字
发布时间:2017-07-10 14:28:15编辑:雪饮阅读()
instanceof示例:
语法:实例名 instanceof 类名
若该对象属于后面的类则返回true,否则返回false
System.out.println(w instanceof Women);
System.out.println(w instanceof Man);
System.out.println(man instanceof Man);
System.out.println(man instanceof Women);
完整demo:
public class NewKeywordDemo
{
public static void main(String[] args){
Person man=new Man();
say(man);
Person w=new Women();
say(w);
}
public static void say(Person p){
//man与women的公共方法,可以直接执行
p.say();
//getanry只有women才有,所以要判断是否属于women
if(p instanceof Women){
//由于父类引用子类的对象实例,所以运行时先在父类中找方法
//所以,虽然子类中有getanry,但由于先在父类找getanry则找不到,所以会编译异常
//所以需要先转换
Women w=(Women)p;
w.getanry();
}
}
}
abstract class Person
{
private String name;
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
public abstract void say();//抽象方法
}
class Man extends Person
{
public void say(){
System.out.println("奎托斯");
}
}
class Women extends Person
{
public void say(){
System.out.println("women");
}
public void getanry(){
System.out.println("getanry");
}
}
通过instanceof关键字,我们可以很方便的检查对象的类型。但如果一个父类的子类过多,这样的判断还是很繁琐,那么如何去设计一个父类
父类通常情况下都设计为抽象类或接口,其中优先考虑接口,如接口不能满足才考虑抽象类。(因为抽象类和接口不能直接实例化对象,比如上面示例的抽象类中只需要平级的去检查,而不需要检查父类,因为父类不能实例化,是不可能有对象的)
一个具体的类尽可能不去继承另一个具体类,这样的好处是无需检查对象是否为父类的对象。
关键字词:javase,instanceof