一、前言
我们已经学完了所有 JavaSE 的知识,这一节做个串联和总结。
二、Java中的三大特性
2.1 封装
1. java 如何实现封装?
答:通过类,访问修饰限定符和包来实现。
类是通过数据和封装数据的方法结合在一起。限定符是控制方法和数据是否能直接在类外使用。包是类接口之外的封装。
访问修饰限定符:public、protected、default、private。
2. static 关键字
static修饰变量:所有对象共享的数据,存储在方法区,在类加载的时候就创建好了。
static修饰方法:类方法,不属于某个对象。可以通过对象调用,也可以通过类名、方法名调用。不能在静态方法中访问非静态成员,因为没有 this 参数。
类通过 static 修饰,该类就变成了内部修饰类。static 在代码块中使用被称为静态代码块,一般用来初始化静态成员变量。
2.2 继承
1.java中对于继承的使用,使用 extends 关键字
2.继承后子类对于父类的访问:
如果重名优先从子类当中找,子类中没找到就去父类中找。同名的情况下,如果想要调用父类,使用 super 关键字调用父类。
3. java中支持的继承方法:单继承,多继承,不同类继承同一类。
4.继承中有关构造方法的问题:
初始化子类时,先初始化父类。子类会默认在构造方法首行自动调用父类的无参构造方法,如果父类构造方法是有参的,子类必须调用父类带有参数的构造方法,并传递参数。
5.super 和 this 的区别
在构造方法中不能同时出现,构造方法中 super 和 this 都只能出现在第一行。
在类中的非静态方法中使用,只能访问类中的非静态成员方法。
super 是对继承父类的成员的引用,this 是对当前对象成员的引用。
6. final 关键字
可以用来限制继承。
修饰变量,表示变量不能进行修改。
修饰类,表示类不能被继承。
修饰方法,表示方法不能被重写。
三、多态
1. 同一件事,发生在不同对象身上会产生不同的结果。
2.多态的实现条件:
必须在继承的体系下进行实现。
子类需要对父类的方法进行重写。
通过父类的引用调用重写的方法。
3.在代码中是如何进行实现的:代码运行时,当传入不同类对象时,会调用对应类中重写的方法。
4.方法的重写
重写的对象:是对父类中非 final ,非 private,非 static,非构造方法的重写。
如何重写:方法名,方法参数必须相同,返回值类型(构成父子关系),修饰符可以不同,但子类方法的修饰符不能比父类方法低,方法体不同。
5.方法的重载
方法的参数列表必须不同,方法名必须相同。
6.向上转型、向下转型
向上转型:子类向父类转型
向下转型:父类向子类转型
7.对象和引用之间的关系
通过引用变量来指向对象的地址。
其中引用对象是存放在栈中,而对于一个对象来说,通过new 一个新对象后,会存放在堆中。new出来的对象是唯一的,而多次引用时引用用一个对象。
四、抽象类和接口
1.抽象类
一个类没有足够的信息来描述一个具体的对象,就是抽象类。用关键字 abstract
注意:抽象方法不能为 private,默认为 public,不能为 final ,static(重写);抽象类不能被实例化对象,抽象类被继承时子类必须重写父类的抽象方法,否则子类也是抽象类。
抽象类可以有构造方法,也可以有非抽象方法。
2. 接口
接口就是一种行为规范,Java中的接口相当于是多个类的公共示范,是一种引用数据类型。
关键字:interface
其他类使用通过implements 接口名来进行使用,之后也需要重写里面的抽象方法。
接口中的抽象方法只能被 public abstract 修饰,重写接口方法时,不能使用 default 进行修饰,接口中的默认方法(public abstract)不能进行实现,接口中的变量默认为public abstract final 进行修饰
接口中不能有静态代码块和构造方法。
接口之间可以进行多继承,普通的类可以实现多个接口,但只能继承一个抽象类。
五、String 类
String 类被 final 修饰,就是不可变,线程安全。String 是引用类型,底层是 final 修饰的字符串数组存储。
StringBuilder 和 StringBuffer的区别
StringBuilder 线程安全,每个方法都是通过synchronized 来进行加锁;StringBuilder 线程不安全。
被final 修饰不能被继承。和 String 相比来说,是在原对象上进行修改,是可变的。
六、java 中的异常
关键字:try_catch_finally,throw(抛出异常),throws(声明异常)。
处理方法:使用try_catch 捕获并处理;通过 throw 抛出异常,在抛出前还需要对该异常进行声明。