优势:
代码:
public class test {
public static void main(String[] args) {
Animal a = new Dog();
a.eat();
}
}
class Animal{
public void eat(){
System.out.println("动物再吃东西");
}
}
class Dog extends Animal{
@Override
public void eat(){
System.out.println("狗吃骨头");
}
public void lookHome(){
System.out.println("狗在看家");
}
}
class Cat extends Animal{
@Override
public void eat(){
System.out.println("猫吃小鱼干");
}
public void catchMouse(){
System.out.println("猫抓老鼠");
}
}
运行结果为:
弊端:
修改方法:
转换分两种:
自动类型转换:
强制类型转换:
Java关键字instanceof可以用来检查对象是否是指定类的实例,或者是否是其子类或实现类的实例。
语法:
object instanceof class
其中,object是要检查的对象,class是要检查的类。
当object是class的实例时,或者是class的子类或实现类的实例时,instanceof返回true;否则返回false。
示例:
```java
// 定义父类Animal
class Animal {
// 父类的方法
public void eat() {
System.out.println("Animal is eating...");
}
}
// 定义子类Dog,继承自Animal
class Dog extends Animal {
// 子类的方法
public void bark() {
System.out.println("Dog is barking...");
}
}
public class Main {
public static void main(String[] args) {
Animal animal = new Animal();
Dog dog = new Dog();
// 检查animal对象是否是Animal类的实例
System.out.println(animal instanceof Animal); // true
// 检查animal对象是否是Dog类的实例
System.out.println(animal instanceof Dog); // false
// 检查dog对象是否是Animal类的实例
System.out.println(dog instanceof Animal); // true
// 检查dog对象是否是Dog类的实例
System.out.println(dog instanceof Dog); // true
}
}
```
输出结果:
```
true
false
true
true
```