文章目录
一.继承
子类根据不同访问属性(public,private…)继承父类的特性和方法
- 使用extends关键字,使一个类继承另一个类
- 一个子类只能有一个父类,单继承
- 被继承的类|父类----超类|根类
- 继承类|子类-----派生类
- 一个类默认没有申明extends,默认申明Object类
- public成员:子类继承使用
- default成员:同包内子类访问
- protected成员: 不同包和同包子类都可以访问成员
- private成员:子类无法访问
二.重写Override
子类重写父类的方法,重写的方法与父类方法的(方法名,返回类型,参数列表一致),隐藏继承的父类的方法(覆盖)
- 能被子类继承的方法,就能override;
- override后的方法归子类专有
- 子类再调用这个方法就是重写后的方法;
1.多态性
多态性体现: 重写(子类和父类产生各自的不同功能方法)和重载(根据参数不同调用不同的相同名子构造方法)
不同类对同一信息的不同反馈
三.super关键字
主要调用父类的成员和方法,使用时起第一行
1.访问父类
-
访问父类成员变量
super.成员变量
-
调用父类方法
super.方法名()
-
调用父类构造方法
super(参数列表)-----参数列表对应父类中构造方法的参数列表
super()表示调用父类不带参的构造方法
四.向上转型
父类的引用变量可以指向子类对象
Father child = new Child( );//child是父类的引用变量,new child是引用变量指向的子类对象
//引用变量调用的是父类的重写Override后的方法
五.Object类
是所有类的根类/超类,每个类都是由Object扩展而来,拥有Object类所有方法
1.==和equals()方法的区别:
- == 比较地址 && 比较赋值;(都满足才true)
- equals()先比较地址是否相同 || 再比较赋值是否相同;(任意满足true)
equals()方法重写一般与hashcode一起重写,在类中重写:
快捷键生成
public boolean equals(Object o) { if (this == o) return true; if (!(o instanceof Student)) return false; Student student = (Student) o; return id == student.id && age == student.age; } @Override public int hashCode() { return Objects.hash(id, age); }
2.常量池
String字符串是final修饰的常量,不可改变;
3.Integer类
-128~127
4.重写hashCode
5.重写toString()方法
往往用于输出对象时
Object 类提供的toString方法总是返回该对象实现类的类名 + @ +hashCode值
@Override
public String toString() {
return “Employee [empId=” + empId + “, empName=” + empName + “, salary=” + salary + “]”;
}
6.instanceof关键字
检查一个对象是否是一个类的实例或者是其子类的实例。
对象名 instanceof 类名
,//输出布尔值。
六.字符串补充
1.final关键字
表示不可改变的常量
-
final类
- 不能被继承无子类
- 内部方法无法被覆盖
- 内部所有方法都是隐藏的
-
final方法
无法被重写,只能实现一次
2.final默认修饰的String
不能被继承和改变
3.StringBuffer类和StringBuilder类
- StringBuffer类
构造方法 | 说明 |
---|---|
StringBuffer() | 构造一个没有字符的字符串缓冲区,初始容量为16个字符 |
StringBuffer(CharSequence seq) | 构造一个包含与指定的相同字符的字符串缓冲区 CharSequence |
StringBuffer(int capacity) | 构造一个没有字符的字符串缓冲区和指定的初始容量。 |
StringBuffer(String str) | 构造一个初始化为指定字符串内容的字符串缓冲区 |
方法 | 说明 |
---|---|
append(String str) | 将指定的字符串附加到此字符序列。 |
capacity() | 返回当前容量。 |
deleteCharAt(int index) | 删除 char 在这个序列中的指定位置。 |
insert(int offset, char c) | 在此序列中插入 char 参数的字符串表示形式。 |
- StringBuffer扩容(扩展)
String | StringBuffer | StringBuilder | |
---|---|---|---|
执行速度 | 最差 | 其次 | 最高 |
线程安全 | 线程安全 | 线程安全 | 线程不安全 |
使用场景 | 少量字符串操作 | 多线程环境下的大量操作 | 单线程环境下的大量操作 |
其次 | 最高 | ||
线程安全 | 线程安全 | 线程安全 | 线程不安全 |
使用场景 | 少量字符串操作 | 多线程环境下的大量操作 | 单线程环境下的大量操作 |