问题描述:
public class Person{
}
/*
多态注意事项:
1、多态是方法的多态,属性没有多态
2、父类子类,有联系 》类型转换异常!ClassCastException!
3、存在的条件:继承关系,方法需要重写
*/
/*
那些方法不能被重写
1、static 方法,属于类,它不属于实例
2、final 常量
3、private方法
*/
public class Student extends Person{
public void go(){
System.out.println("go");
}
}
/*
//System.out.println(x instanceof y); //能不能编译通过,如果x和y有父子关系,就通过,否则不通过
//object>person>student
//object>person>teacher
// object>String
Object object = new Student();
System.out.println(object instanceof Student);
System.out.println(object instanceof Person);
System.out.println(object instanceof Object); //三个都是true
System.out.println(object instanceof Teacher);
System.out.println(object instanceof String); //两个都是false
System.out.println("=================");
Person person=new Student();
System.out.println(person instanceof Student);
System.out.println(person instanceof Person);
System.out.println(person instanceof Object); //三个都是true
System.out.println(person instanceof Teacher);
// System.out.println(person instanceof String); //报错
System.out.println("=================");
Student student=new Student();
System.out.println(student instanceof Student);
System.out.println(student instanceof Person);
System.out.println(student instanceof Object); //三个都是true
// System.out.println(student instanceof Teacher); //报错
// System.out.println(student instanceof String); //报错
*/
public class Teacher extends Person{
}
import com.company.Person;
import com.company.Student;
public class APP {
public static void main(String[] args) {
//类型之间的转换:父变子(高转低,强转)
/*
1、父类引用指向子类的对象
2、把子类转换为父类,向上转型
3、把父类转换为子类,向下转型,强制转换
4、子转父,可能丢失方法,父转子,可能损失精度
*/
Person abc =new Person();
//abc这个对象转换为Student 类型,我们就可以使用Student类型的方法(go)了!如下
Student student=(Student)abc;
student.go();
}
}