java多态及tostring方法与equals方法的重写

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());
	}
}

  

原文地址:https://www.cnblogs.com/gaofangquan/p/7210218.html