package Demo3;
public class Person {
public static void main(String[] args) {
//object>person>student
//object>string
//object>person>teacher
Object object = new Student();
System.out.println(object instanceof Student); //true
System.out.println(object instanceof Person); //true
System.out.println(object instanceof Object); //true
System.out.println(object instanceof Teacher); //False
System.out.println(object instanceof String); //False
}
}
true
true
true
false
false
Person person = new Student();
System.out.println(person instanceof Student); //true
System.out.println(person instanceof Person); //true
System.out.println(person instanceof Object); //true
System.out.println(person instanceof Teacher); //False
//System.out.println(person instanceof String); //错误
person与string完全没有关系,所以编译错误
Student student = new Student();
//学生与老师,学生同级老师,二者没有关系,肯定错误
System.out.println(student instanceof Teacher);
/*System.out.println(x instanceof y);
编译能不能通过,取决于x于y是否存在父子关系,有就可以
*/
上面不懂没关系
看下面的
student中写一个方法
package Demo3;
public class Student extends Person {
public void go()
{
System.out.println("go");
}
}
在主函数里面测试类的类型转换
public class Application {
public static void main(String[] args) {
//类型之间的转换: 父 子
//高 低
Person student=new Student();
// student.go();//不行,因为右边是person是person里面的方法
}
强制转换为student
Person obj=new Student();
// student.go();//不行,因为右边是person是person里面的方法
//student将这个对象转换为student类型,就可以使用student类型的方法
Student student=(Student) obj;
student.go();
/*
1,父类引用指向子类的对象
2.把了类转换为父类,向上转型
3.把父类转换为子类,向下转型;强制转换
4.方便方法的调用,减少重复的代码!简洁
抽象:封装、继承、多态!
*/