多态
instanceof (类型转换) 引用类型
抽象: 编程思想 !持续学习 茅塞顿开
/*
//Object>String
//Object>Person>Teacher
//Object>Person>Student
Object object=new Student();
// System.out.println(X instanceof Y);//能不能编译通过!
//有关系就编译通过
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 String);//false
System.out.println(object instanceof Teacher);//false
System.out.println("=================================================");
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 String);// 编译报错
System.out.println(person instanceof Teacher);//false
System.out.println("=================================");
Student student=new Student();
System.out.println(student instanceof Student);//true
System.out.println(student instanceof Person);//true
System.out.println(student instanceof Object);//true
// System.out.println(student instanceof String);//编译报错
// System.out.println(student instanceof Teacher);//报错
*/
//public class Person {
// public void run(){
// System.out.println("run");
//
// }
//}
// public static void main(String[] args) {
// //一个对象的实际类型是确定的
new Student();
new Person();
// //可以指向的引用类型就不确定了 父类的引用指向子类
// //对象能执行哪些方法,主要看对象的左边的类型。
// //Student 能调到的方法都是自己的或者继承父类的!
// Student s1 = new Student();
// //Person 父类型 可以指向子类,但是不能调用子类独有的方法
// Person s2 = new Student();
// Object s3 = new Student();
// s1.run();
// s2.run();
// //子类重写了父类的方法,执行子类的方法
// s1.eat();
// // s2.eat; 不能调用父类没有eat方法
// ((Student)s2).eat();
//
//
// }
//}
///*
//多态注意事项
//1.多态是方法的对太,属性没有多态(方法是动态的行为,属性是静态的数据)
//2.父类与子类,有联系 类型转换异常 ClassCastException
//3.存在条件,继承关系,方法的重写 父类引用指向子类 Father f1=new Son
// 1.static 方法,属于类 他不属于实例
// 2.final 常量
// */
//类型转换:父 子
Student student = new Student();
student.go();
Person person=new Student();
}
}
//类型之间的转换 基本类型转换 64 32 16 8
//类型转换 父类 子类
//高 低
// Person obj = new Student();
// obj将这个对象转换为Student类型,就可以使用Student 类型方法
// Student student = (Student) obj;
// student.go();
// ((Student)obj).go();
- 父类引用指向子类的对象
- 子类转换父类,向上转型;
- 父类转换子类,向下转型;需要转换 丢失方法
- 方便方法的调用,减少重复的代码;简介
- 抽象 :封装 继承 多态!! 抽象类