面向对象基础
继承
Java只允许单继承,所有类最终的根类是Object;
protected允许子类访问父类的字段和方法;
子类的构造方法可以通过**super()**调用父类的构造方法;
可以安全地向上转型为更抽象的类型;
可以强制向下转型,最好借助instanceof判断;
多态
final修饰符有多种作用:
(1)final修饰的方法可以阻止被覆写;
(2)final修饰的class可以阻止被继承;
(3)final修饰的field必须在创建对象时初始化,随后不可修改。
抽象类
定义了抽象方法的类是抽象类,不能被实例化;
抽象方法对应于c++的纯虚函数,关键字为abstract.
从抽象类继承的子类,若不实现抽象方法,则子类也是抽象类
接口
如果一个抽象类没有字段,所有方法全部都是抽象方法,则可以改写为接口
接口比抽象类更抽象
包
Java内建的package机制是为了避免class命名冲突;
JDK的核心类使用java.lang包,编译器会自动导入;
JDK的其它常用类定义在java.util.,java.math.,java.text.*,……;
包名推荐使用倒置的域名,例如org.apache
位于同一个包的类,可以访问包作用域的字段和方法。不用public、protected、private修饰的字段和方法就是包作用域
作用域
定义为public的field、method可以被其他类访问,前提是首先有访问class的权限;
包作用域是指一个类允许访问同一个package的没有public、private修饰的class,以及没有public、protected、private修饰的字段和方法。
一个.java文件只能包含一个public类,但可以包含多个非public类。如果有public类,文件名必须和public类的名字相同。
Java核心类
StringBuilder
StringBuilder是可变对象,用来高效拼接字符串;
StringBuilder可以支持链式操作,实现链式操作的关键是返回实例本身;
StringBuffer是StringBuilder的线程安全版本,现在很少使用。