java多态前的一点小细节

java多态前的一点小细节

super关键字

  1. 只能存在于构造方法中,必须是第一行
  2. 使用super()代表着调用父类的构造方法,如果子类的构造方法中没有写super,java系统默认为super()
  3. super.属性名可以调用父类的属性,若父类没有则继续往上寻找
  4. super不能使用在static修饰的方法中

this关键字

1、this在非静态方法中使用

那个对象调用this,this就表示谁

2、this什么时候生成

创建对象就开始生成

3、this可以区分成员变量和局部变量

this.属性名表示成员变量

4、this在构造方法中可以调用重载方法

在构造方法中this(参数列表)就可以调用重载方法

重写与重载的区别

1、重写(override)

如过父类中的方法无法满足,在子类定义一个与父类一样的方法。
但是严格执行三同一不严格(参数列表、方法名、返回值(也可以是子类)相 同),修饰符不能比父类更加严谨。

2、重载(overload)

方法的重载:是多态的一种实现策略,方法的重载表现为.
格式:方法名相同,参数列表不同(与返回值、修饰符无关)
参数列表:参数个数相同时,参数的类型必须不同

== 与 equals的区别

1、==

基本类型:比较的时值
引用数据类型:比较的时地址

2、equals

没有重写equals时,比较的时地址
public boolean equals(Object obj) {
          
   
return (this == obj);
}
重写后的equals比较的是值,但是如果比较后的结果为True时,hashCoed()的值 必须相同。故,重写equals必须重写hashCode()。

this与super区别

相同点: 都不能在static修饰的位置使用
使用super来引用父类的成分
用this来引用当前类的成分
经验分享 程序员 微信小程序 职场和发展