面向对象程序四大特征(面向对象高级特性Object类)
Object类是所有类的根父类, 也就是说如果一个类没有显式声明父类, 那么这个类的父类就是Object类, 所以, Object类中的属性和方法会被所有类继承, 都可以直接调用.,我来为大家科普一下关于面向对象程序四大特征?以下内容希望对你有帮助!
面向对象程序四大特征
Object类的特点Object类是所有类的根父类, 也就是说如果一个类没有显式声明父类, 那么这个类的父类就是Object类, 所以, Object类中的属性和方法会被所有类继承, 都可以直接调用.
类中的典型方法1. toString()
public String toString() 这个方法返回当前对象的一个字符串表示, 通常用于描述这个对象的内容.
这个方法也会在对象被打印和与字符串拼接时自动调用, 结果还是一个字符串.
2. equals()
表示两个对象内容是否相等, 通常情况下, 两个不同的对象是不相等的, 但是我们可以通过覆盖这个方法,实现两个内容相等, 但不同的对象之间具有等同性比较能力.
3. hashCode()
当两个对象的内容相等时, equals方法的结果就应该返回true, 但同时这两个对象调用hashCode方法返回的哈希码值也必须要相等, 相同的道理, 两个hashCode码值不同的对象, equals方法一定返回false.
public class Point {
private int x;
private int y;
public Point() {}
public Point(int x, int y) {
this.x = x;
this.y = y;
}
public void setX(int x) {
this.x = x;
}
public int getX() {
return x;
}
public void setY(int y) {
this.y = y;
}
public int getY() {
return y;
}
public String say() {
return "X:" x ",Y:" y;
}
@Override // 可以完成真实的比较
public boolean equals(Object obj) {
if (obj instanceof Point && this.x == ((Point)obj).x && this.y == ((Point)obj).y) {
return true;
}
return false;
}
@Override
public int hashCode() {
return Integer.parseInt(x * 10 "" y * 10);
}
// 返回对象的字符串表示, 通常在打印对象时调用
@Override
public String toString() {
return "x:" x ",y:" y;
}
}
public class PointTest {
public static void main(String[] args) {
Point p1 = new Point(10, 20);
Point p2 = new Point(10, 20);
System.out.println(p1 == p2); // 打印false, 因为比较两个对象的地址
boolean b = p1.equals(p2); // 返回true, 因为比较两个对象的内容
System.out.println(b);
System.out.println(p1.hashCode()); // 两个对象的哈希码也都一样
System.out.println(p2.hashCode());
System.out.println(p1); // 打印对象时, 打印的其实是对象的toString()方法的结果
}
}
Object类型通常用于表示任意对象的引用类型, 使用Object类型可以兼容任意对象, 很灵活方便, 也因为Object类是根父类, 所以其中的方法具有普遍性, 便于统一处理.
Object的注意点因为Object类型是父类类型, 所以Object类型的对象究竟是什么类型的对象就变得非常复杂, 所以想要处理不同的子类对象, 比较麻烦, 需要配合instanceof操作符和类型转换。
了解更多内容:
面向对象基础类与对象
面向对象基本特征继承
面向对象基本特征多态
java面向对象基础方法
java面向对象基础属性
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com