接口(interface)
接口跟抽象类特别像
用来拓展定义类的功能,可以弥补java中单继承的缺点
类是单继承,只能继承一个类,只能有一个爹,接口可以弥补
硬件类接口(用户界面)
软件类接口(是由程序员设计出来的)
在java接口中,只有抽象方法没有方法实现。
因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为。
定义接口的格式
【修饰符】interface接口名{}
接口中的成员修饰符是固定的:
-
public static final 修饰的变量为常量,该值不能改变,只能读。
-
修饰符:可选,用于指定的接口的访问权限,可选值为public。即使省略,默认是public
-
接口名:接口名必须是符合java标识符,一般情况下,要求首字母大写。
-
方法:接口中的方法只有定义没有被实现。
声明成员变量,即使没有修饰符,也会默认为public static final。
声明成员方法,即使没有修饰符,也会默认为public abstract。
类和接口的关系
-
类和接口是实现关系,类实现接口。
-
【访问权限修饰符】class 类名 【extends 父类名】【implements 接口列表】
-
实现接口的实现类,必须重写接口中所有抽象方法后,子类才可以被实例化,否则报错。
-
一个类可以实现多个接口,多个接口用逗号分隔,也可以不实现接口。
-
java不支持多继承,类可以实现多个接口。
-
一个类在继承另一个类同时,还可以实现多个接口。
-
接口的出现避免了单继承的局限性。
接口跟接口的关系
接口与接口之间是继承关系,而且可以多继承。
接口不能继承类。
接口与抽象类的区别
在java中接口是一个比抽象类更加抽象的概念,由于之声明行为,因此在接口中的方法都是抽象的,下表表现接口和抽象类的差异:
| abstract class | interface | |
|---|---|---|
| 属性 | 不用限制 | public静态final常量 |
| 构造方法 | 可有可无 | 没有 |
| 普通方法 | 可以有具体方法 | 必须是public抽象方法 |
| 子类 | 单一继承 | 多重实现(接口继承接口时为多重继承) |
-
抽象类体现继承关系,一个类只能单继承。
-
接口体现实现关系,一个类可以多实现。
-
抽象类是继承is a关系。
-
接口是实现是like a关系。
jdk8接口的默认方法
原本接口只有抽象方法(没有方法体)jdk8中,接口可以有默认方法(可以有方法体)。
默认方法的声明很简单,直接在接口中把方法声明为default,之后再写方法的实现即可,
这样所有的实现类都会继承这个方法。
Object类
Object是类层次结构的根类,每个类都使用Object作为父类(超类)。
所有对象(包括数组)都实现这个类的方法。
它具有所有对象都具备的共同内容。
类Object在java.lang包下。没有写继承就会继承Object。
Object类是java语言中所有类的根,所有的类都直接或者间接的继承Object类。
数组也继承了Object类。
打印对象就是打印对象的(包名 类名 内存地址)。
Object类中toString方法
该方法返回一个字符串,它的值等于:包名+类名+@+内存地址
使用hashCode的时候,基本都是和equals一起使用。
既然一起使用那么重写的时候hashCode和equals方法一起重写。
finallize方法了解就可
finallize()方法是在垃圾收集器删除对象之前对这个对象调用的。
java中的包装类型
java提供一系列包装类,以便原始数据类型当做对象进行操作。
好处:基本数据类型封装成对象,在对象中定义了属性和方法。
可以方便操作该数据(得到整形最大值、最小值、进制转换)
每一个基本数据类型都有一个相应的包装类。
除了整形及字符型外,其他的包装器类型名字都是将基本数据类型首字母大写。
包装类在程序开发中主要用于基本数据类型和字符串之间的转换。
String s="10"; int i=Integer.parselnt(s);
除了Character(char类型的包装类)类外,其他的包装类都有静态的parse 数据类型 方法
用于将字符串转换成相应的基本数据类型。
包装类型Character类常用的方法:
| 方法原型 | 说明 |
|---|---|
| boolean isLetter(char ch) | 判断字符ch是否为英文字母 |
| boolean isDigit(char ch) | 判断字符ch是否为0~9之间数字 |
| boolean isUpper(char ch) | 判断字符ch是否为大写形式 |
| boolean isLower(char ch) | 判断字符ch是否为小写形式 |
| boolean isWhitespace(char ch) | 判断字符ch是否为空格或字符串 |
以上方法都是静态方法,可以通过类名直接调用,返回值为boolean类型。
java自动封装与拆装的使用方法
封装:基本数据类型转换为包装器类型,成为封装(boxing)。Integer i=10;
拆装:包装器类型转换为基本数据类型,成为拆装(unbing)。(int i =new Integer(10));
在自动装箱拆箱过程中,java使用到了常量池。
常量池就是方法区的一部分,是内存的逻辑分区。
枚举的概念
定义常规的静态常量后存在一些小问题:代码可读性差、易用性低、类型不安全、耦合性高、扩展性差。
枚举就是为了这样的问题诞生的,枚举在java中简称为(Enum)是一个特定类型的类。
所有枚举,都是Enum的子类(java.lang.Enum)
【访问权限】enum 枚举名{ }方法体内直接列举枚举的列表。
switch语句enum类型,使用枚举,能让我们的代码可读性更强。
本文详细介绍了Java中的接口与抽象类的区别和作用,强调接口在多继承场景下的优势。讲解了接口的定义、成员变量和方法的特性,以及如何实现接口。同时,提到了JDK8中接口的默认方法,增加了接口的灵活性。此外,还涵盖了Object类的基本概念和方法,以及Java中的包装类型和自动装箱拆箱。最后,枚举的引入提高了代码的可读性和安全性,尤其是在switch语句中的使用。
558

被折叠的 条评论
为什么被折叠?



