重載(overload):
*方法名相同,參數類型不同或參數個數不同。
*有沒有返回值,返回值類型和返回值相不相同不影響重載。
例子:
public class Son { public void show(int a){ System.out.println(a); } public void show(String s){ System.out.println(s); } public void show(String s,int a){ System.out.println(a+s); } public static void main(String[] args) { Son son = new Son(); son.show(10); son.show("拉姆"); son.show("拉姆", 20); } }
顯示結果:
重寫(overwrite / override):
將父類的方法重新定義
--在子類中可以根據需要從父類中繼承來的方法進行重寫
--重寫方法必須和被重寫的方法具有相同的方法名, 參數列表和返回類型
--重寫方法不能使用比被重寫方法更嚴格的訪問權限
toString方法的重寫
System.out.println(s);
System.out.println(s.toString);
不寫.toString 默認也是toString輸出
Object
類的 toString
方法返回一個字符串,該字符串由類名(對象是該類的一個實例)、at 標記符“@
”和此對象哈希碼的無符號十六進制表示組成。換句話說,該方法返回一個字符串,它的值等於:
getClass().getName() + '@' + Integer.toHexString(hashCode())
重寫toString之前
重寫toString之后
Book.java
public class Book { public String name; public String zuozhe; public Book(String name,String zuozhe){ this.name = name ; this.zuozhe = zuozhe; } public String toString() { return "Book [name=" + name + ", zuozhe=" + zuozhe + "]"; } }
Main.java
public class Main { public static void main(String[] args) { Map a =new HashMap(); Book d = new Book("西游記","吳承恩"); System.out.println(d.toString()); } }
equals方法的重寫
沒重寫之前比較的是地址
重寫之后可以自己定義比較的內容
Book.java
public class Book { public String name; public String zuozhe; public Book(String name,String zuozhe){ this.name = name ; this.zuozhe = zuozhe; } public String toString() { return "Book [name=" + name + ", zuozhe=" + zuozhe + "]"; } public boolean equals(Object aa){ if(aa instanceof Book){ Book b = (Book)aa; if(this.name ==b.name && this.zuozhe == b.zuozhe){ return true; } } return false; } }
Main.java
public class Main { public static void main(String[] args) { Map a =new HashMap(); Book b = new Book("西游記","吳承恩"); Book d = new Book("西游記","吳承恩"); boolean bb = b.equals(d); System.out.println(bb); } }