一:抽象类和抽象方法
1:抽象方法的语法格式
[访问修饰符] abstract<返回类型><方法名>([参数列表])
2:抽象类的语法格式
abstract class<类名>{ }
3:例题
public abstract class Pet { public abstract void play(); } class Cat extends Pet{ @Override public void play() { System.out.println("撸猫"); } }
4:抽象类和普通类的区别:
-
抽象类可以有抽象方法
-
被实例化 (有构造方法)
5:注意事项:
abstract 修饰的抽象方法没有方法体
private 关键字不能用来修饰抽象方法,否则会因为封装导致子类无法重写抽象方法。
抽象类不能被直接实例化,但有构造方法。
子类如果不是抽象类,则子类必须重写抽象类中的全部抽象方法。
abstract 和 final 不能一起使用
* 当子类继承父类后,子类不强制要求需要重写父类的方法。我们将方法使用 abstract 修饰,子类就必须重写。 * 一个类不希望被实例化,就可以声明为 abstract 类。 * 一个类继承了一个抽象类,但是没有重写(实现)抽象方法,这个类就可以声明为抽象类 * 定义规范时,可以使用抽象类。
二:字符串变量
StringBuffer 类和StringBuilder类的区别 (1)StringBuffer 和 StringBuilder 都是继承自抽象类 AbstractStringBuilder (2)StringBuffer 从 jdk1.0 开始就提供了,而StringBuilder 是jdk1.5才提供的 (3)两个类大部分实现都一样, 不同点在于 StringBuffer 中大部分方法都有 synchronized 修饰,synchronized 表示同步,修饰的方法表示同步方法。是多线程中一种线程安全的实现方法。 (4)StringBuffer 是线程安全的类,StringBuilder是非线程安全的 (5)执行效率 StringBuilder 相对较高.