Override:
在子类中,可以根据需要对从基类中继承来的方法进行重写
重写方法必须和被重写方法具有相同的方法名称、参数列表、和返回类型
重写方法不能使用比被重写方法更更严格的访问权限
例子:
public class Animal {
private Stringname;
public void shout(){
System.out.println("动物会叫..");
}
public class Dog extends Animal{
@Override
public void shout() {
System.out.println("汪汪。。汪汪。。。");
}
}
Super:是直接父类对象的引用可以通过super访问父类汇中被子类覆盖的方法或属性
普通方法:没有顺序,任意调用
构造方法:任何类的构造方法中,如果构造方法中没有显示的调用super(…),那么Java会默认调用super()作为父类的初始化方法,所以在写不写super()方法,没有关系。
Object类:是所有Java类的祖先。每个类都使用Object作为超类。所有对象(包括数组)都实现这个类的方法
Object类: getClass()方法
1)在构造方法中获取当前实例化的对象类型
2)获取引用数据类型,所指向的对象实例的类型
hashCode()方法:
对象实例化后hash码固定,不会因对象属性改变而改变。
再次执行程序,hash码不要求和之前一致。
如equals方法返回true,hash码也应一致。
开发者应尽量做到为不是equals的对象,产生不同hash码。
出于实际运用的角度,java将对象实例的内存地址转为整型。
equals()方法:
指出其他对象是否和当前对象相等。
对于非空引用 x 的相等运算,满足以下特性:
对于任何非空引用值x, x.equals(x) 会返回true.
对于任何非空引用值 x和y, x.equals(y) 会返回true当且仅当 y.equals(x)返回true.
对于任何非空引用值 x, y,和z, 如果x.equals(y)返回true 且y.equals(z)返回true, 则x.equals(z)会返回true
对于任何非空引用值 x 和y, 在对象引用值没有修改的前提下多次调用会一致的返回ture或false.
所以,对于以下代码,使用 == 和equals方法,结果都一直,都是false
两个对象实例的内存地址不同
操作符== 和对象的equals()方法:
s1,s2两个字符串,地址不同,
但 equals 比较相等返回true
说一下”==“和”equals”之间的区别?
1、如果比较的是基本数据类型,使用==进行比较,比较的是值
2、如果比较的是引用类型,”==”比较的是引用的内存地址,
equals本身是要比较的对象值,但是object类中Equals方法的实现是比较的地址,所以如果要比较引用的值是否相等,此时要重写equals方法事实上进行比较对象
toString()方法:
所有类都会直接或者间接继承于Object类,都会拥有toString()方法。
而Object类中的toString()方法只是返回类的全限定名和内存地址码。
可以重写toString()方法,来实现自己需要的打印信息。
浅克隆(shallow copy)
Employee cindy=tobby.clone()
深克隆(deep copy) 必须实现Cloneable接口
class Employee implements Cloneable {
public Object clone() throws CloneNotSupportedExceptio{
Employee cloned = (Employee) super.clone();
cloned.hireDay = (Date) hireDay.clone()
return cloned;
}
}
如果对象中有引用类型,就必须使用深度克隆,就是在克隆时,要把对象中的引用类型对象,也要进行克隆。
finalize()方法:定义回收当前对象时需要完成的清理工作
System类是java中的常用类,主要功能:
currentTimeMillis()方法,静态方法:返回从1970年1月1日至今的毫秒时间数。
实现无用内存的回收功能,gc()方法强制JVM进行垃圾回收工作,使无用的内存能够获得释放。
退出:强制JVM退出运行状态,并返回状态信息。
对象转型: