目录
概念
由于封装,使得有共同特征的一类事物的所有描述信息都被归于一类之中,但我们知道,这并不是万能的,有些事物有共性,但还存在区别,比如码农,简单封装起来如下:
优缺点
优点:1、提高代码的维护性(只需要改动父类)。2、提高代码的复用性(共性的成员抽取到父类中,子类可以直接继承使用)。
缺点:类和类之间的关系太紧密了。(耦合性增强)
object类
在Java中,Object
类是所有类的超类(或称为根类)。这意呀着,在Java中,你创建的任何类都隐式地继承自 Object
类,除非你的类显式地继承自另一个类。Object
类提供了所有Java对象共享的一组方法。这些方法主要包括:
-
equals(Object obj)
:比较当前对象与指定对象是否相等。默认情况下,这比较的是对象的内存地址(即是否为同一个对象)。但是,很多类都会重写这个方法以提供更有意义的相等性判断public class Person { // 假设Person类有name属性 @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null || getClass() != obj.getClass()) return false; Person person = (Person) obj; return Objects.equals(name, person.name); } // 假设有getter和构造函数 public static void main(String[] args) { Person p1 = new Person("John Doe"); Person p2 = new Person("John Doe"); System.out.println(p1.equals(p2)); // 输出 true,如果name相同 } }
-
hashCode()
:返回对象的哈希码值。这个值用于支持哈希表,如HashMap
中的键和HashSet
中的元素。如果两个对象通过equals(Object obj)
方法比较是相等的,那么它们的哈希码也必须相同@Override public int hashCode() { return Objects.hash(name); }
-
toString()
:返回对象的字符串表示。对于大多数对象,这仅仅是类的名称后跟哈希码的无符号十六进制表示,但对于很多类来说,toString()
方法会被重写以返回更有意义的描述性字符串public class Person { private String name; public Person(String name) { this.name = name; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + '}'; } public static void main(String[] args) { Person p = new Person("John Doe"); System.out.println(p); // 输出 Person{name='John Doe'} } }
-
clone()
:创建并返回对象的副本。需要注意的是,默认情况下,clone()
方法是受保护的,且并不适用于所有对象;只有实现了Cloneable
接口的类的实例才能被克隆public class Person implements Cloneable { // 假设Person类有name属性 @Override protected Object clone() throws CloneNotSupportedException { return super.clone(); } // 假设有getter和构造函数 public static void main(String[] args) throws CloneNotSupportedException { Person p1 = new Person("John Doe"); Person p2 = (Person) p1.clone(); System.out.println(p1 == p2); // 输出 false,因为是不同的对象 } }
-
finalize()
:当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。但是,自Java 9起,finalize()
方法已被标记为过时(deprecated),并且在未来的版本中可能会被移除。这主要是因为finalize()
方法的使用常常导致难以预料的问题,而且更好的做法是使用显式的管理资源或清理资源的机制,如try-with-resources
语句和java.lang.ref.Cleaner
类@Override protected void finalize() throws Throwable { super.finalize(); // 清理代码 }
-
getClass()
:返回表示对象运行时类的Class
对象。 -
notify()
、notifyAll()
和wait()
:这些方法是Java线程同步机制的一部分,用于线程间的通信。它们必须与同步语句(如synchronized
方法或同步块)一起使用,因为它们涉及到锁定对象并管理对象的等待集合。
尽管 Object
类提供了一些基础的功能,但通常,当我们编写Java程序时,会基于具体的业务需求去继承更具体的类或者实现接口,同时重写 Object
类中的某些方法(特别是 equals(Object obj)
和 hashCode()
),以满足我们的特定需求
示例
标签:Java,name,Person,--,Object,继承,对象,public From: https://www.cnblogs.com/yangcurry/p/18358394