2022-7-23 pan小堂 Object与Final

Object类

1.Object方法

public final native Class<?> getClass() 返回object运行时类

public native int hashCode() 返回对象的hash码值

public boolean equals(Object obj)指示一些其他对象是否等于此

protected native Object clone() throws CloneNotSupportedException 创建对象并返回对象的副本

public String toString()返回对象的字符串表示形式 

public final native void notify() 唤醒正在等待对象监视器的单个线程。

public final native void notifyAll() 唤醒正在等待对象监视器的所有线程 

public final native void wait(long timeout) throws InterruptedException导致当前线程等待,直到另一个线程调用该对象的 notify()方法或 notifyAll()方法 

public final void wait(long timeout, int nanos) throws InterruptedException   导致当前线程等待,直到另一个线程调用该对象的 notify()方法或 notifyAll()方法,或者某些其他线程中断当前线程,或一定量的实时时间。

public final void wait() throws InterruptedException 导致当前线程等待,直到另一个线程调用该对象的 notify()方法或 notifyAll()方法 
protected void finalize() throws Throwable {}   当垃圾收集确定不再有对该对象的引用时,垃圾收集器在对象上调用该对象。

2.equals与==

对于基本数据类型, == 判断两个值是否相等。基本类型没有equals()。

对于引用数据类型, ==判断两个变量是否引用同一个对象,而equals()判断引用的对象是否等价。

	Integer x = new Integer(1);
	Integer y = new Integer(1);
	System.out.println(x.equals(y)); // true
	System.out.println(x == y);      // false

hashCode()

hashCode() 返回散列值,而 equals() 是用来判断两个对象是否等价。等价的两个对象散列值一定相同,但是散列值相同的两个对象不一定等价。
在覆盖 equals() 方法时应当总是覆盖 hashCode() 方法,保证等价的两个对象散列值也相等。

final

1.数据

声明数据为常量,可以编译时常量,也可以是在运行时被初始化后不能被改变的常量。
对于基本类型,final 使数值不变;
对于引用类型,final 使引用不变,也就不能引用其它对象,但是被引用的对象本身是可以修改的

2.方法

声明方法不能被子类重写。
private 方法隐式地被指定为 final,如果在子类中定义的方法和基类中的一个 private 方法签名相同,此时子类的方法不是重写基类方法,而是在子类中定义了一个新的方法。

3.类

声明的类不能被继承

重写与重载

  1. 重写(Override) 存在于继承体系中,指子类实现了一个与父类在方法声明上完全相同的一个方法。 为了满足里式替换原则,重写有以下两个限制: 子类方法的访问权限必须大于等于父类方法; 子类方法的返回类型必须是父类方法返回类型或为其子类型。
    使用 @Override 注解,可以让编译器帮忙检查是否满足上面的两个限制条件。
  2. 重载(Overload) 存在于同一个类中,指一个方法与已经存在的方法名称上相同,但是参数类型、个数、顺序至少有一个不同。 应该注意的是,返回值不同,其它都相同不算是重载。

总结:

 1.今天的知识点不是特别多,更多的时间让我们做练习。练习也是巩固之前学的知识和今天学的,今天的练习。
 2.我绝大多数的知识运用的话没有什么问题,但是也是有些知识记不住,需要多复习复习。
posted @ 2022-07-23 21:13  阿萨德菩提子  阅读(24)  评论(0编辑  收藏  举报