方法重写

方法重写:
方法的重写(覆盖) override 子类和父类有同名方法
方法的重载 overload 在一个类中 有同名方法
方法重写的现象:

  1. 父类有的方法,子类没有,子类直接继承使用
  2. 父类没有 ,子类特有 ,只能子类对象自己调用。
  3. 父类和子类都有某个方法 ,比如 show ,这就叫子类重写了父类的方法,简称方法重写,此时,子类对象调用的是子类中定义的方法。

方法重写需满足:
1. 父类中的方法 和 子类中的方法
2. 方法名必须一致
3. 方法参数必须一致
4.子类的方法的访问修饰符不能缩小访问权限
5.返回值类型要一致(子类的返回值类型 也可以是 父类的返回值类型的子类)
Object
Object 是所有类的顶级类 意味着其他类的对象都可以调用Object中定义的,可以被继承的方法。

toString()   return getClass().getName() + "@" + Integer.toHexString(hashCode());
System.out.println(obj);   会调用 obj 的 toString 方法 打印返回的字符串

后面写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(...);
那么Java默认都会调用super();作为父类的初始化函数。 所以你这里的super();加不加都无所谓。

父子类环境下构造方法的执行顺序:

  1. 创建子类对象必然会调用父类的构造方法和子类的构造方法。
  2. 在子类的构造方法中,第一条语句默认是 super() , 意思是调用父类的无参构造。
  3. 如果父类没有无参构造,也可以使用 super 调用有参构造。总之一句话,在调用子类构造方法时,要调用父类的构造方法完成父类数据的初始化。
  4. 构造方法的第一句代码,要么是 super, 要么是 this ,super 表示调用父类的构造方法。this是 表示调用子类的构造方法 ,都是为了初始化对象。二者不可能同时存在 ,因为一个对象只能被初始化一次。
  5. 建议每个类都提供无参构造。

杂记

  • 给类的属性起名一定要规范 如果不规范,生成的get、set方法也不规范(例如变量首字母大写,命名不规范,则生成构造方法会只有一个含有this)
  • this 和 super用法基本一致,this指向了子类数据,super指向了父类数据
  • 打印一个对象相当于打印这个对象的tostring方法
  • 比较字符串用equals来比
  • 子类类型可以自动向父类类型转换
  • 方法的重写 override
    方法重写发生在父子类中,当有子类有此方法时,调用的时子类的。子类重写子类方法,是扩展了父类方法
  • 哈希值 一个int类型的数值 可以看做内存中的地址值
  • Class getClass(); 返回类的字节码对象,反射的时候用。
  • ctrl+Shift+t OpenType(打开类) 去查找类
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值