1.instanceof和类型转换

  • instanceof 引用类型比较,判断一个对象是什么类型
public static void main(String[] args) {

    // Object > String
    // Objest > Person > Student
    // Objest > Person > Teacher
    Object object = new Student();
	// X instanceof Y,X引用指向的对象是不是Y的子类
    System.out.println(object instanceof Student); //true
    System.out.println(object instanceof Person); //true
    System.out.println(object instanceof Teacher); //false
    System.out.println(object instanceof Object); //true
    System.out.println(object instanceof String); //false
	
    //类型之间的转化:父-子(高-低),低可以转换为高
    Person obj = new Syudent(); //只能用Person方法(重写了用子类重写过的方法)
    (Syudent)obj.go(); //强转之后可以用Student方法(Student->go())
}

2.类型转换

  • 父类引用指向子类的对象
  • 把子类转换为父类,向上转型,会丢失自己原来的一些方法
  • 把父类转换为子类,向下转型,强制转换,才调用子类方法
  • 方便方法的调用(转型),减少重复的代码,简洁。