声明:此篇文章,作为个人梳理复盘用,主要是想将已经遗忘的知识点重新串联串联,没有学过的知识补充一下,可能不够严谨,如有不当欢迎指正,谢谢!
对于复习的人来讲,或者学了一些,但是没有学透彻,感觉啥都知道点,但是又不是特别清楚那种,感觉重新看网课太浪费时间,不学跳过又不太行,比如我。
感觉看网站上的知识点相当不错了,感觉效率高很多,尤其是找到喜欢的阅读材料!!!
目录
[抽象类 抽象事物的描述](#抽象类 抽象事物的描述)
[接口类 约定规则的描述](#接口类 约定规则的描述)
构造方法
创建对象实例时就把内部字段全部初始化为合适的值,构造方法的名称就是类名,和普通方法相比,构造方法没有返回值(也没有void),调用构造方法,必须用new操作符。
方法重载
这种方法名相同,但各自的参数不同,称为方法重载 (Overload)。
继承
不要写重复的代码不要写重复的代码,子类自动获得了父类的所有字段,严禁定义与父类重名的字段!
子类无法访问父类的private字段或者private方法。为了让子类可以访问父类的字段,我们需要把private改为protected。【protected关键字可以把字段和方法的访问权限控制在继承树内部】
Super: 子类引用父类的字段时,可以用super.fieldName。
向上转型
向下转型
父类类型强制转型为子类类型,最好借助instanceof判断;
必须用super的时候:
父类的构造方法有参数的时候。如果父类没有默认的构造方法,子类就必须显式调用super()并给出参数以便让编译器定位到父类的一个合适的构造方法。
这里还顺带引出了另一个问题:即子类不会继承任何父类的构造方法。子类默认的构造方法是编译器自动生成的,不是继承的。
多态
Java的实例方法调用是基于运行时的实际类型的动态调用,而非变量的声明类型。
这个非常重要的特性在面向对象编程中称之为多态。
多态具有一个非常强大的功能,就是允许添加更多类型的子类实现功能扩展,却不需要修改基于父类的代码。【缩短代码量,不用重复啰嗦一堆具体的代码】
final
如果一个父类不允许子类对它的某个方法 进行覆写 ,可以把该方法标记为
final。用final修饰的方法不能被Override
用final修饰的类不能被继承
用final修饰的字段在初始化后不能被修改
覆写
子类如果定义了一个与父类方法签名完全相同的方法,被称为覆写 (Override)。如果方法签名相同,并且返回值也相同,就是**Override。**
覆写Object方法
因为所有的class最终都继承自Object,而Object定义了几个重要的方法:
toString():把instance输出为String;
equals():判断两个instance是否逻辑相等;
hashCode():计算一个instance的哈希值。
调用super
在子类的覆写 方法中,如果要调用父类的被覆写的方法,可以通过super来调用。
抽象类
可以通过抽象类Person类型去引用具体的子类的实例
这种尽量引用高层类型,避免引用实际子类型的方式,称之为面向抽象编程。
抽象方法 本质上是定义接口规范:即规定高层类的接口,从而保证所有子类都有相同的接口实现,这样,多态就能发挥出威力。
接口
-
抽象类,没有字段,都是抽象方法,可以改写成接口interface,implements去实现。
-
一个类可以实现多个接口
-
接口继承接口用extends
-
在接口中,可以定义
default方法。 -
实现类可以不必覆写default方法。default方法的目的是,当我们需要给接口新增一个方法时,会涉及到修改全部子类。如果新增的是default方法,那么子类就不必全部修改,只需要在需要覆写的地方去覆写新增方法。
class Student implements Person, Hello
封装
通过使用private修饰、getter/setter方法负责读取 修改 校验属性值、限制外界对其的访问。
static 修饰类中修饰,共享,不随成员变
访问修饰符
private【同类】、默认修饰符【同包】、protected【子类】、public 【任何地方】 范围逐渐增大
抽象类 抽象事物的描述
public abstract class 类名{}
访问修饰abstract 返回值类型方法名(参数列表)
接口类 约定规则的描述
public\] **interface**接口名{ 定义变量,静态常量,定义时候必须赋值; 定义抽象方法 ; 默认方法; 静态方法; 私有方法; }
- 接口继承extends
- 接口实现implements
抽象类有构造方法,而接口没有构造方法。
接口中只能定义公开的静态常量
抽象只能单继承,接口可以多继承
多态
[概念]
继承、接口也是多态的体现。
多态体现在类别、做事方式上
多态分为
- 编译时多态【方法重载】(<1>编译时就已经确定如何调用)
- 运行时多态(<1>不会调用父类定义的1方法,而是调用了子类重写的方法. 动物园的例子,节省了很多代码)
[instannceof运算符]
- 对象名 instanceof类名;(检测对象是否为该类类的一个实例,返回boolean类,用来条件判断挺好)
Object类常用方法
- getClass()返回Class对象,这个对象能获取该类的有关信息
- hashCode()返回对象为哈希码,对象的内存地址(16进制)
- equals(Object obj)比较两个对象是否相等,true ore false,完全相等
- toString()返回对象的String表示形式,用在调试很好用,考虑重写方便调试
- finalize()当该对象变为垃圾时,可以在该对象上调用
异常
- Throwable
public StringgetMessage();//获取异常发生的原因
public void printStackTrace();//打印异常在栈中的轨迹信息
- Error
- Exception
- RuntimeException
- 检查异常
异常处理
使用5个关键字:throw、throws、try、catch、finnally
- 【语法:throw 异常对象】
- 【语法:访问修饰符 返回值类型 方法明(参数列表) throws 异常类型1 异常类型2 异常类型3 异常类型n】(只能抛出其中一种)
- 【语法:try{ }catch(异常类型 异常对象名){ }catch(异常类型 异常对象名){ }catch(异常类型 异常对象名){}】
- 【语法:try{ }finally{ }/////////////////try{}catch{}finally{}】
自定义异常
好处:只需要熟悉RuntimeException 、Exception 和Throwable就可以了
自定义运行时异常:
java
public class 类名 extends RuntimeException{}
检查异常
java
public class 类名 extends Exception{}
异常使用的注意事项123
字符串
String -------》构造方法
-----------》常用方法
- 获取长度
- 字符串比较
- 大小写转换
- 获取字符在字符串中的下标、字符串在字符串中的下标
- 获取字符串指定下标的字符
- 字符串截取
- 字符串替换
- 获取字符数组
- 获取字节数组
- 字符串拼接
- 去除字符串两端的空白字符
- 字符串分割
- 字符串匹配正则表达式
- intern()方法
SringBuilder-----------》特性
------------》构造方法
------------》常用方法
<1>final修饰的,不可能被继承,StringBuilder构建的对象可以实现字符序列的追加,不会产生新的对象,只是将这个字符序列保存在字符数组中
<2>构造方法,构建一个对象,构建并指定初始化容量,构建并将指定字符串存入其中
<3>常用方法
追加、删除、