java面向对象的四大特性
继承 封装 多态 (抽象)
多态
一、四种表现形式 1.方法重载 2.方法重写 3.抽象类 4.接口
二、同一个对象 体现出来的多种不同形态(身份) 将一种行为表现出不同的效果
要想实现多态的效果 需要现有继承方法
三、体现
1.父类类型的引用 指向 子类的对象
Person p = new Teacher();
2.该引用只能调用父类中定义的属性或方法
3.如果子类中将父类的方法重写,那么调取方法后执行的结果是子类重写之后的那个结果
如果父类与子类有同名的属性 执行父类的属性
如果父类与子类有同名的方法(重载) 执行子类重写之后的方法
4.若想要调用子类中独有的成员
(强制类型转化) 造型 铸型 (向上/向下转型)
5.造型时(强制向下转型时) 可能会出现一个运行异常
ClassCastException 造型 铸型 异常
如果想要避免造型的异常 可以用instance关键字来进行判断
对象 instanceof 类
四、 InputMismatchException 输入不匹配
NumberFormateException 数字格式化异常
ArrayIndexOutOfBoundsException 数组索引越界
NegativeArraySizeException 数组长度负数
NullPointerException 空指针异常
ArithmeticException 算数异常
ClassCastException 造型异常 将对象的类型还原时 与真实类型不匹配
*Error 栈内存溢出错误
五、 Object
hashCode equals toString getClass ...
Animal
name属性 eat sleep
Person Pig
name属性 重eat 重sleep 独talk name属性 重sleep
Teacher Student
name 重eat 独有teach name属性 重talk 独study
Object o =new Teacher();
o.hasCode o.toString
Animal a = (Animal)o;
a.hashCode(); a.toString(); a.name a.eat() a.sleep()
Person p = (Person)o;
p.hasCode(); p.toString(); p.name p.eat() p.sleep()
Teacher t = (Theacher)o;
t.hasCode(); t.toString(); t.name t.eat() t.sleep()
Student s = (Student)o; //不可以哦,会出现ClassCastException 造型异常