重写(继承关系)
子类得成员方法和父类的成员方法,方法名,参数类型,参数个数完全相同,这就是子类的方法重写了父类的方法。
重载
在一个类里有两个方法,方法名是完全一样的,参数类型或参数个数不同。
例子:
//父类 public class Pet { public void eat(){ System.out.println("pet eat"); } public void eat(String a){ //重载,同一个类,方法名相同,参数类型或个数不同 System.out.println("pet String eat"); } }
//子类 public class Cat extends Pet{ public void eat(){ //重写 System.out.println("cat eat"); } public void eat(int a){ System.out.println("cat int eat"); } }
toString() 方法重写
- 返回:
- 该对象的字符串表示形式。
直接调用 toString() 方法
还可以点击 Source 中的Genenrate toString() 方法来选择要使用该方法的参数 和方法 来生成官方的 toString() 方法
public class Pet { public void eat(){ System.out.println("pet eat"); } public void eat(String a){ //重载,同一个类,方法名相同,参数类型或个数不同 System.out.println("pet String eat"); } @Override //官方提供的重写toString() 方法 public String toString() { return "Pet [getClass()=" + getClass() + ", hashCode()=" + hashCode() + ", toString()=" + super.toString() + "]"; } }
equals方法重写
equals比较两个new实例化的对象返回结果一定为false,重写让他比较对象的属性
instanceof
public class Pet { private String name; private String sex; public void eat(){ System.out.println("pet eat"); } public void eat(String a){ //重载,同一个类,方法名相同,参数类型或个数不同 System.out.println("pet String eat"); } @Override //官方提供的重写toString() 方法 public String toString() { return "Pet [getClass()=" + getClass() + ", hashCode()=" + hashCode() + ", toString()=" + super.toString() + "]"; } public boolean equals(Object obj){ if(obj!=null){ if(obj instanceof Pet){ //判断传入的对象是不是Pet类的 Pet t1=(Pet)obj; //将obj强制转换成Pet return this.equals(t1.name)&&this.equals(t1.sex); //判断当前对象的属性是否相同 } } return false; } }
父类的引用指向子类的对象。
public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Pet c=new Cat(); c.eat(); } }