代码示例
public class InstanceofTest {
public static void main(String[] args) {
Dog d=new Dog("哈士奇","白色");
d.run();
System.out.println("狗是狗类吗?"+(d instanceof Dog));
System.out.println("狗是动物类吗?"+(d instanceof Animal1));
Mouse m=new Mouse("汤姆","黑色");
m.bite();
// System.out.println("狗是动物类吗?"+(d instanceof Mouse));
// Animal1 animal1=(Animal1)d;
// System.out.println(animal1.getName());
Animal1 animal11 = new Dog("小妞");
System.out.println((animal11 instanceof Dog)+" 父类是狗狗");
Dog dog=(Dog)animal11;
System.out.println(dog.getName()+" 狗狗姓名");
Animal1 animal12 = new Mouse("小妞niu");
Mouse mouse=(Mouse)animal12;
System.out.println(mouse.getName()+" 老鼠姓名");
// Animal1 a=new Animal1("动物","蓝色");
// System.out.println("动物类是狗吗?"+(a instanceof Dog));
// if(a instanceof Dog){
// Dog dog=(Dog)a;
// System.out.println("强转成功");
// }
}
}
class Animal1{ //动物类
String name;
String color;
public Animal1(String name,String color){
this.name=name;
this.color=color;
}
public Animal1() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
}
class Dog extends Animal1{ //狗类
private String name;
public Dog(String name, String color) {
super(name, color);
}
public Dog(String name) {
this.name = name;
}
@Override
public String getName() {
return name;
}
@Override
public void setName(String name) {
this.name = name;
}
public void run(){
System.out.println(name+"开始奔跑");
}
}
class Mouse extends Animal1{ //老鼠类
private String name;
public Mouse(String name) {
this.name = name;
}
public Mouse(String name,String color){
super(name,color);
}
public void bite(){
System.out.println(name+"吃东西");
}
@Override
public String getName() {
return name;
}
@Override
public void setName(String name) {
this.name = name;
}
}
打印结果
null开始奔跑
狗是狗类吗?true
狗是动物类吗?true
null吃东西
true 父类是狗狗
小妞 狗狗姓名
小妞niu 老鼠姓名
1、Java 继承
继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
2、Java 子类强转父类
父类引用指向子类对象:
java中子类强转父类,实际上依然是子类;
该引用只能调用父类中定义的方法和变量;
如果子类中重写了父类中的一个方法,那么在调用这个方法的时候,将会调用子类中的这个方法;
3、Java 父类强转子类
只有父类对象本身就是用子类new出来的时候, 才可以在将来被强制转换为子类对象.