重写
-
需要有继承关系,子类重写父类的方法
-
方法名必须相同
-
参数列表必须相同
-
修饰符:范围可以扩大但不能缩小|public>Proteced>Default>private
-
抛出的异常
-
-
重写子类的方法和父类必须一致:方法体不同
-
为什么需要重写:
-
父类的功能子类不一定需要,或者不一定满足
-
Alt+Insert Override(重写)
-
调用函数:
package opp.oop5; public class App { //静态的方法和非静态的方法区别很大! //静态方法的方法调用只和左边定义的数据类型有关 //重写只和非静态方法有关 public static void main(String[] args) { A a = new A(); a.test(); B b = new A();//子类重写父类的方法 b.test(); } }
子类:
package opp.oop5; import javax.jws.soap.SOAPBinding; public class A extends B{ public void test(){ System.out.println("A=>test"); } }
父类:
package opp.oop5; public class B { public void test(){ System.out.println("B=>test"); } }
多态
-
即同一方法可以根据发送对象的不同而采用多种不同的行为方式
-
一个对象的实际类型是确定的,但可以指向对象的引用类型有很多(父类,有关系的类)
-
多态存在的条件
-
有继承关系
-
子类重写父类方法
-
父类引用指向子类对象
-
-
注意:多态是方法的多态,属性没有多态
-
instanceof 类型转换
调用函数:
package opp.oop6; public class App { public static void main(String[] args) { /* 一个对象的实际类型是确定的 new Student(); new Student(); */ //可以指向的引用类型不确定 //父类的引用执行子类 Student s1 = new Student(); Person s2 = new Student(); Object s3 = new Student(); s2.run(); s1.run(); } }
父类:
package opp.oop6; public class Person { public void run(){ System.out.println("跑"); } } /* 多态注意事项 1.多态是方法的多态,属性没有多态 2.父类和子类要有联系 类型转换异常:ClassCastException! 3.存在条件:继承方法,方法需要重写,父类引用指向子类对象! Father f1=new Son(); 4.有些方法不能重写: *static方法,属于类,它不属于实例 *final 常量 *private方法 */
子类:
package opp.oop6; public class Student extends Person{ @Override//子类重写父类的方法,执行子类的方法 public void run() { System.out.println("pao"); } public void eat(){ System.out.println("eat"); } }