JAVA面向对象(重载,重写 常用的 toString/equals)
重载(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); } }