JAVA面向对象(重载,重写 常用的 toString/equals)
Posted for米洛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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); } }
以上是关于JAVA面向对象(重载,重写 常用的 toString/equals)的主要内容,如果未能解决你的问题,请参考以下文章
Java面试_君哥讲解笔记_java面向对象_12 java和C++的区别面向对象怎么理解重载和重写的区别构造器是否可以被重写静态变量和实例变量的区别
JavaSE入门学习15:Java面向对象之J重写(Override)和重载(Overload)