⭐⭐⭐⭐⭐equals和”==”有什么区别
- “==”可以引用在基本数据类型和引用数据类型中。
- 如果比较的是基本数据类型,则比较的是两个变量保存的数据是否相同。
- 如果比较的是引用数据类型,则比较的是两个变量的地址是否相同。即两个引用是否指向同一个(实体)对象。
equals:
- 只能用于引用数据类型。
- Object类中的equals()方法和”==”作用相等。
- 像String,Data,File类中,都重写了equals()方法。比较了两个对象的实体内容是否相同。
重写和重载的异同
重写:
- 是父类与子类之间的多态性,实质是对父类的函数进行重新定义。
- 如果在子类中定义某方法与其父类有相同的名称和参数则该方法被重写。
- 子类重写的方法类型的返回值类型 <= 父类的被重写的方法的返回值类型
- 子类重写的方法的权限 ≥ 父类重写的方法的权限
- 子类重写的方法 抛出的异常 ≤ 父类重写的方法抛出的异常
- 重写Overriding是父类与子类之间多态性的一种表现,
-
重载:
在类中,体现为:方法名相同,而参数列表不同的多个方法。
- 调用方法时通过传递不同参数个数和参数类型来决定具体使用哪个方法的多态性
- ,重载Overloading是一个类中多态性的一种表现。
- 方法的重载 实现的是编译时的多态性
⭐final 关键字
- 修饰变量:成为常量,不能被修改。
- 修饰方法:不能被重写,不能被覆盖。
- 修饰类:不能被继承,并且不能修改这个类。
接口和抽象的异同
抽象类:
- abstract修饰的类为抽象类,此类不能有对象,不能实例化。
- abstract修饰的方法为抽象方法,此方法不能有方法体。
- 有抽象方法的类一定是抽象类,抽象类不一定有抽象方法
-
接口:
用interface来定义,用implements去实现
- 接口内部所有的成员变量默认时public static final 修饰
接口内部所有的方法默认是 public abstract 修饰
- 接口中没有构造器
- 接口采用多继承机制
相同点:
- 1两者都是抽象类, .都不能实例化,
- 2两者都必须要实现已经声明的抽象方法。
不同点:
- 1.抽象类:有构造器,单继承,
- 2.接口没有构造器,多继承
- interface强调特定功能的实现,而abstract class强调所属关系。
趋势: 随着JDK不断的更新,接口越来越像类
设计思想的区别:
接口是自上而下的抽象过程,接口规范了某些行为,是对某一行为的抽象。我需要这个行为,我就去实现某个接口,但是具体这个行为怎么实现,完全由自己决定。
抽象类是自下而上的抽象过程,抽象类提供了通用实现,是对某一类事物的抽象。我们在写实现类的时候,发现某些实现类具有几乎相同的实现,因此我们将这些相同的实现抽取出来成为抽象类,然后如果有一些差异点,则可以提供抽象方法来支持自定义实现。
普通类像亲爹 ,他有啥都是你的。
抽象类像叔伯,有一部分会给你,还能指导你做事的方法。
接口像干爹,可以给你指引方法,但是做成啥样得你自己努力实现。