判断变量a指向的对象,是否匹配指定类型,如果a为null,那么返回false.
public static void main(String[] args) {
Animal a=new Dog();
System.out.println(a instanceof Animal) //true
}多态总结:
1:使用父类类型的应用指向子类的对象
2:该引用只能调用父类中定义的方法,不能调用子类中独有的方法
3:如果子类中重写了一个父类中的方法,那么在调用该方法的时候,将会调用子类中的这个方法。
4:在多态中,子类可以调用父类中所有的方法
5:多态主要体现为重载和重写。 相同的行为不同的实现方式
6:多态主要应用为多态参数和多态集合
如果一个方法中有父类作为参数类型,就意味着可以给该方法传递任何一个子类对象
例:
public abstract class Animal{ //abstract
public abstract void eat();
}
class Cat extends Animal{
public void eat(){
System.out.println("吃鱼")
}
}
如果一个类中的方法,只有方法定义,没有方法具体实现,那么该方法就称为抽象方法。而拥有抽象方法的类叫抽象类,使用关键字abstract定义。抽象类不能直接实例化,如果实例化抽象类,那么抽象类变量需要指向子类对象。
抽象类中可以定义抽象方法也可以定义具体方法。如果一个类继承抽象类,那么必须重写抽象类中定义的所有抽象方法。
抽象方法定义的意义在于,使用父类变量指向子类对象时,可以对抽象方法进行调用。
类和类行为的抽象 称为接口
接口可以使一种行为的抽象。接口可以看做是抽象类中的特例。抽象类中可以有抽象方法,可以有具体方法。但接口中只能有抽象方法。定义接口使用interface。实现接口使用implements
接口中定义的方法都是抽象方法,修饰符为public abstract 。即使不写,也是公用的抽象方法
如果一个方法参数为接口类型,意味着可以传递该接口的任何实现类对象。
接口中可以定义变量,但是其修饰符是public \static\ final
接口可以继承接口。同时可继承多个接口。一个类实现一个接口,不但要实现该类接口中定义的抽象方法,而且要实现该接口父类接口中定义的抽象方法。
抽象类和接口的区别:
1:抽象类和接口都不能直接实例化。
2:抽象类中可以有抽象方法,也可以由具体方法。但接口中只能有抽象方法。
3:抽象类中定义的变量时普通属性。但接口中定义的变量是公共的静态常量。
4:一个类只能继承一个抽象类,但可以实现多个接口。
public static void main(String[] args) {
Animal a=new Dog();
System.out.println(a instanceof Animal) //true
}多态总结:
1:使用父类类型的应用指向子类的对象
2:该引用只能调用父类中定义的方法,不能调用子类中独有的方法
3:如果子类中重写了一个父类中的方法,那么在调用该方法的时候,将会调用子类中的这个方法。
4:在多态中,子类可以调用父类中所有的方法
5:多态主要体现为重载和重写。 相同的行为不同的实现方式
6:多态主要应用为多态参数和多态集合
如果一个方法中有父类作为参数类型,就意味着可以给该方法传递任何一个子类对象
例:
public abstract class Animal{ //abstract
public abstract void eat();
}
class Cat extends Animal{
public void eat(){
System.out.println("吃鱼")
}
}
如果一个类中的方法,只有方法定义,没有方法具体实现,那么该方法就称为抽象方法。而拥有抽象方法的类叫抽象类,使用关键字abstract定义。抽象类不能直接实例化,如果实例化抽象类,那么抽象类变量需要指向子类对象。
抽象类中可以定义抽象方法也可以定义具体方法。如果一个类继承抽象类,那么必须重写抽象类中定义的所有抽象方法。
抽象方法定义的意义在于,使用父类变量指向子类对象时,可以对抽象方法进行调用。
类和类行为的抽象 称为接口
接口可以使一种行为的抽象。接口可以看做是抽象类中的特例。抽象类中可以有抽象方法,可以有具体方法。但接口中只能有抽象方法。定义接口使用interface。实现接口使用implements
接口中定义的方法都是抽象方法,修饰符为public abstract 。即使不写,也是公用的抽象方法
如果一个方法参数为接口类型,意味着可以传递该接口的任何实现类对象。
接口中可以定义变量,但是其修饰符是public \static\ final
接口可以继承接口。同时可继承多个接口。一个类实现一个接口,不但要实现该类接口中定义的抽象方法,而且要实现该接口父类接口中定义的抽象方法。
抽象类和接口的区别:
1:抽象类和接口都不能直接实例化。
2:抽象类中可以有抽象方法,也可以由具体方法。但接口中只能有抽象方法。
3:抽象类中定义的变量时普通属性。但接口中定义的变量是公共的静态常量。
4:一个类只能继承一个抽象类,但可以实现多个接口。