方法重写:
方法的重写(覆盖) override 子类和父类有同名方法
方法的重载 overload 在一个类中 有同名方法
方法重写的现象:
方法重写需满足:
1. 父类中的方法 和 子类中的方法
2. 方法名必须一致
3. 方法参数必须一致
4.子类的方法的访问修饰符不能缩小访问权限
5.返回值类型要一致(子类的返回值类型 也可以是 父类的返回值类型的子类)
Object
Object 是所有类的顶级类 意味着其他类的对象都可以调用Object中定义的,可以被继承的方法。
后面写javabean一般都会重写 Object 的 toString 方法。
boolean equals(Object obj) 判断两个对象的内容是否相等,如果两个对象的内容一样,就认为是同一个对象。
int hashCode() 返回对象的哈希吗 一个 int 类型的数值
Class getClass() ; 返回类的 字节码对象 反射的时候要用
void wait(long time) 等待 多线程的时候讲
… wait 重载的wait
notify() 唤醒一个线程
notifyAll() 唤醒所有线程
---------------以上都是 public
finalized() 垃圾回收器相关的方法
clone() 克隆
---------------- 这俩 是 protected
private static native void registerNatives();
native 本地的 native 修饰的方法,都没有方法体,因为 java 自身实现不了 ,java无法直接访问操作系统底层 ,为此 java 使用 native 来扩展java 的 功能,可以将native 修饰的方法,理解成 java 程序调C程序的接口。
equals 方法是 Object 类中 定义的 比较 两个对象的内容是否相等
boolean equals(Object obj)
equals
equals 和 = = 二者都有比较是否相等的含义
对比二者:
== 比较的是栈内存中的数据,操作数可以是基本类型也可以是引用类型,如果是基本类型,比较的就是基本类型数据的值 ,如果是引用类型比较的是引用变量所引用的对象的内存地址值。其实,比较的就是变量的值是否相等。
boolean equals(Object obj) 但是Object的实现是 return this == obj; 这行代码比较的还是引用变量的值,即内存地址值,而不是对象的内容,所以,自定义的类,一定要重写equals 方法来比较对象的内容。这里比较对象的内容指的就是比较对象的属性值, 如果两个对象的属性值完全一样,就认为这两个对象是相等的, 或者是同一个对象,使用 equals 比较,一样就返回 true, 否则返回false。
JDK 中重写了 Object 的 equals 方法的还有 Date Double Integer String 等等
super
父子类环境下构造方法的执行顺序:
创建子类对象必然会调用父类的构造方法和子类的构造方法。在子类的构造方法中,第一条语句默认是 super() , 意思是调用父类的无参构造。如果父类没有无参构造,也可以使用 super 调用有参构造。总之一句话,在调用子类构造方法时,要调用父类的构造方法完成父类数据的初始化。构造方法的第一句代码,要么是 super, 要么是 this ,super 表示调用父类的构造方法。this是 表示调用子类的构造方法 ,都是为了初始化对象。二者不可能同时存在 ,因为一个对象只能被初始化一次。建议每个类都提供无参构造。杂记
给类的属性起名一定要规范 如果不规范,生成的get、set方法也不规范(例如变量首字母大写,命名不规范,则生成构造方法会只有一个含有this)this 和 super用法基本一致,this指向了子类数据,super指向了父类数据打印一个对象相当于打印这个对象的tostring方法比较字符串用equals来比子类类型可以自动向父类类型转换方法的重写 override方法重写发生在父子类中,当有子类有此方法时,调用的时子类的。子类重写子类方法,是扩展了父类方法哈希值 一个int类型的数值 可以看做内存中的地址值Class getClass(); 返回类的字节码对象,反射的时候用。ctrl+Shift+t OpenType(打开类) 去查找类