抽象类
Java中可以i当以被abstract关键字修饰的方法,这种方法只有声明,没有方法体,叫抽象方法
Java中可以定义被abstract关键字修饰的类,被abstract修饰字修饰的类叫做抽象类
抽象类中的方法实现交给子类来完成
抽象方法的格式
权限修饰符 abstract 返回值类型 方法名(参数);
特点:
1.抽象类中可以没有抽象方法,但是有抽象方法的类,必须是抽象类
2.子类继承了抽象类后,要么还是一个抽象类,要么重写所有抽象方法
3.多用于多态中
4.抽象类不能被实例化
接口
格式: interface 接口名{代码}
特点
1.接口中的都是抽象方法
2.通过interface关键字来定义接口,子类可以通过implements来实现接口
3.接口可以理解为一个特殊的抽象类,因为接口中的方法都是抽象方法
4.接口突破了java单继承的局限性
5.接口和类之间可以多实现,接口与接口之间可以多继承
6.接口是对外暴漏的规则,是一套开发规范
7.接口提高了程序的功能扩展,降低了耦合性
8.接口中没有成员变量,都是常量,不能被重新赋值,可以直接通过类名调用。(你在接口中定义一个变量没写修饰符时,默认会加上,public static final)
延伸
类和类的关系:
1.继承关系,只支持单继承
2.子类需要修改原有的功能,需要重写(方法签名与父类一致,且权限修饰符大于等于父类修饰符)
类与接口的关系
1.是实现关系,可以单实现,也可以多实现(class A implements B,C{})
其中A是实现类,B和C是接口,A拥有BC接口的所有功能,只是需要进行方法的重写,否则A就是抽象类
接口与接口的关系
1.继承关系,可以单继承,也可以是多继承(interface A extends B,C{})
其中ABC都是接口,A是子接口,具有BC接口的所有功能(抽象方法)
class X implements A{} X实现类要重写接口A B C 中的所有方法,否则就是抽象类
class A extends B implements C,D{} A是实现类,也是B的子类,同时拥有接口 C D 的所有功能,所以A需要重写接口C D的所有抽象方法
接口与抽象类的区别:
1.抽象类是一个特殊的类,因为抽象类中可以包含没有方法体的方法(抽象方法)
2.接口可以理解为一个特殊的抽象了类,因为接口里没有普通方法,都是抽象方法
3.抽象类中可以有构造方法,用来给子类创建对象,接口中没有构造方法
4.抽象类和接口都不能实例化(创建对象)
5.抽象类中可以有普通方法,接口中全是抽象方法
StringBuilder和StringBuffer
特点:
1.封装了char[]数组
2.是可变的字符序列
3.提供了一组可以对字符内容修改的方法
4.常用 append() 来代替字符串,做字符串连接"+"
5.内部字符数组默认初始容量是16,如果大于16会尝试扩容,新数组的大小是原来的2倍+2
6.StringBuffer 1.0出道,线程安全, StringBuilder 1.5出道,线程不安全
自动装箱和自动拆箱
自动装箱:
把 基本类型 包装成对应的 包装类型 的过程
Integer a = 5 ; (Integer a = Integer.valueOf(5))
自动拆箱:
把 包装类型 自动变成 基本类型 的过程
int i = a; (int i = a.intValue();)
== 和 equals 的区别
1.当使用==比较时,如果相比较的两个变量是引用类型,那么比较的是两者的物理地址(内存地址),如果比较的两个变量都是数值类型,那么比较的是具体的数值是否相等
2.当使用equeals比较时,比较的结果实际取决于equals()方法的具体实现