Java自学|instanceof和类型转换 1.概念 instanceof关键字可以去判断两个类之间是否有父子关系 如果一个对象时某个特定类或者时该特定类的子类的一个实例那么就返回真 不能对两个没有直接
Java自学|instanceof和类型转换
1.概念
- instanceof关键字可以去判断两个类之间是否有父子关系
- 如果一个对象时某个特定类或者时该特定类的子类的一个实例那么就返回真
- 不能对两个没有直接向上关系的类进行如此操作(编译直接报错)
格式:实例 instanceof 类
Person person = new Person();System.out.println(person instanceof Person);
2.实例
我们先定义一个Person类
//基类public class Person {
}
再定义两个个Person的子类,分别为Student和Teacher:
//子类public class Student extends Person{
}//子类
public class Teacher extends Person{
}
我们可以很容易的知道这三个类的关系:
那么我们接下来就可以做测试了
public class selfStudy {public static void main(String[] args) {
Person person = new Person();
System.out.println(person instanceof Person);
System.out.println(person instanceof Student);
System.out.println(person instanceof Teacher);
System.out.println("=================="); //分隔
Student student = new Student();
System.out.println(student instanceof Person);
System.out.println(student instanceof Student);
//System.out.println(student instanceof Teacher);
}
}
我们再分隔线之前,new了一个person对象,让他去和这三个类使用instanceof关键字,我们从上面的关系图可以知道,person这个对象是Person的实例,不是Student和Teacher的实例,也不是Student和Teacher的子类的实例,所以输出结果肯定是true、false、false。
分割线以下部分同理,这里要注意以下我们标上注释的一句,用Student的实例去和Teacher判断,它们没有任何关系,编译时就是直接报错。
结果如下:
3.类的转换
我们知道子类继承了父类的所有方法和属性,是可以直接用父类的方法的;如果将父类转化为子类,那么久可以直接使用子类的方法,但是如果父类是由子类的转化得到的,那么会丢失一部分子类的方法(子类独有的方法)。
世上没有白走的路,每一步都算数!
跟上狂神说Java!
每个牛B的人背后都有段苦逼的岁月,只要像sb一样的坚持,终将牛B!