1.多态性的表现:①方法的重载与重写 ②子类对象的多态性
2.使用的前提:①要有继承关系 ②要有方法的重写3.格式:Person p = new Man();//向上转型 // 虚拟方法调用:通过父类的引用指向子类的对象实体,当调用方法时,实际执行的是子类重写父类的方法 p1.eat(); p1.walk(); // p1.entertainment();4.>编译时,认为p是Person类型的,故只能执行Person里才有的结构,即Man里特有的结构不能够调用 >子类对象的多态性,并不使用于属性。5.关于向下转型:
①向下转型,使用强转符:() ②为了保证不报ClassCastException,最好在向下转型前,进行判断: instanceof // 若a是A类的实例,那么a也一定是A类的父类的实例。 if (p1 instanceof Woman) { System.out.println("hello!"); Woman w1 = (Woman) p1;//强制向下转型 w1.shopping(); }if (p1 instanceof Man) {
Man m1 = (Man) p1; m1.entertainment(); }重写equals方法:
package duotai;public class equa { String name; int age;public equa(String name,int age){ this.name=name; this.age=age;} public boolean equals(Object obj){ if(obj!=null){ if(obj instanceof equa){ equa eq=(equa)obj; return this.name.equals(eq.name);//这里是需要返回值的,所以需要return } }return false;//等于空直接返回false! }}class equa2{ public static void main(String[] ages){ equa e1=new equa("gao",13); equa e2=new equa("gao",13); System.out.println(e1.equals(e2));}}
toString方法重写:
package duotai;public class tos { String name; String sex; public String toString(){ return name+sex; }}class text{ public static void main(String[] args){ tos t=new tos(); t.name="gao"; t.sex="nan"; System.out.println(t.toString()); }}