这篇博客主要是总结一下instanceof关键字的用法。
1.instanceof关键字
语法格式:
对象 instanceof 类型 —返回boolean类型值
该语句一般用于判断一个对象是否为某个类的实例,是返回true,否返回false.
2.父类的设计原则
通过instanceof关键字,我们可以很方便的检查对象的类型,但如果一个父类的子类过多,这样的判断还是显得很繁琐,那么如何设计一个父类呢?
1.父类通常情况下都设计为抽象类或者接口,其中优先考虑接口,如接口不能满足才考虑抽象类。
2.一个具体的类尽可能不去继承另一个具体类,这样的好处是无需检查对象是否为父类的对象。
public class InstanceofKeyDemo {
public static void main(String args[])
{
Person1 man = new Man1();
say(man);
Person1 women2 = new Women2();
say(women2);
}
/**
public static void say(Man1 m)
{
m.say();
}
public static void say(Women2 women)
{
women.say();
}
*/
//多态的思想
/**这是核心,通过将形参的类型指定为父类对象类型,
*那么这个父类的子类都属于这个自动转换为父类的对象类型
*则凡是该父类的子类都可以作为这个方法的参数,就不用的对该方法
*进行一味的重载了
*/
public static void say(Person1 p)
{
p.say();
//当父类中没有子类的方法的时候,怎么解决
//判断p对象是否为Women2的实例
if (p instanceof Women2)
{
Women2 w = (Women2) p;
w.angry();
}
}
}
abstract class Person1{
private String name;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
abstract public void say();
}
class Man1 extends Person1{
@Override
public void say() {
System.out.println("人家是纯爷们了");
}
}
class Women2 extends Person1{
@Override
public void say() {
System.out.print("你今天要是再不交房租,我就烧了你的铺子");
}
//本类中拓展的
public void angry()
{
System.out.println("讨厌,人家生气了啦");
}
}