一、抽象方法
1.抽象方法
抽象类中的方法不能确定如何进行{}方法体实现,称之为抽象方法。
抽象方法只需声明,而无需实现。
定义了抽象方法的类必须是用abstract修饰的抽象类。
2.抽象方法和空方法区分
3.抽象类抽象方法
二、接口
是由一些常量和抽象方法组成的reshuffle的抽象类(一定全部都是抽象方法)
通过接口解决了java语言不支持多重继承的限制问题
1.接口的定义
2.接口特性
- 接口是隐式抽象的,当声明一个接口的时候,不必使用abstract关键字。
- 接口中每一个方法也是隐式抽象的,声明时同样不需要abstract关键字。
- 接口中的方法都是公有的。
例如:
/* 文件名 : Animal.java */
interface Animal {
public void eat();
public void travel();
}
3.接口的实现
三、内部类
1.认识内部类
2.分类
2.1成员式内部类
2.1.1成员内部类的对象构造方法
2.1.2成员内部类的访问关系
内部类可以直接访问外部类的成员变量和成员方法,外部的praivate变量也可以直接在内部类中访问 。
外部类不可以直接访问内部类的成员变量和成员方法,外部类必须先生成一个内部类对象实例,通过内部类的对象实例间接访问内部类成员
2.2静态内部类
在外部类当中国访问内部类成员需要new,就和平时使用类是一样的
2.3局部内部类
在方法体内定义一个类
2.3.1规则
局部内部类是一个局部变量,只在其方法体内部有效;
局部内部类中,可以使用方法中定义的局部变量。如果局部内部类访问了一个局部变量,那么该局部变量必须使用final修饰。
但是在方法中,不可以直接访问局部内部类的变量(就是需要先new,因为他在类的外部)。
需要先生成局部内部对象实例,再间接访问内部类。
局部内部类不可以定义权限访问修饰符。
2.4匿名内部类
四、包装类
1.定义
“包装类”将基本数据类型封装成为Java类,可以采用类和对象的方式处理基本类型数据。
2.对应基本数据类型
3.自动装箱与拆箱
3.1自动装箱:就是Java自动将原始类型值转换成对应的包装类对象
3.2自动拆箱:自动将包装类对象转换成对应的原始类型值
3.3为什么要装箱与拆箱
对于CPU来说,处理一个完整的对象,需要很多的指令,对于内存来说,又需要很多的内存。如果连整数都是对象,那么性能自然很低。
于是创造了这样一种机制,使得这些基本类型在一般的编程中被当作非对象的简单类型处理,在另一些场合,又允许它们被视作是一个对象。
这就是装箱和拆箱。
作用:为了保证通用性和提高系统性能
一种最普通的场景是调用一个包含类型为Object的参数的函数(方法),该Object可支持任意 类型,以便通用。当你需要将一个值类型传入容器时,就需要装箱了。
另一种的用法,就是一个泛型 的容器,同样是为了保证通用,而将元素定义为Object类型的,将值类型的值加入该容器时,需要装箱。
4.Object中常用方法
4.1字符串比较
==:判断两个字符串在内存中的首地址,即判断是否是同一个字符串对象
equals():检查组成字符串内容的字符是否完全一致
五、枚举——关键字:enum
1.使用
2.方法
int compareTo( E o): 比较此枚举与指定对象的顺序
String Name(): 返回此枚举常量的名称。
values():返回枚举类中所有的值。
ordinal():方法可以找到每个枚举常量的索引,就像数组索引一样。
valueOf():方法返回指定字符串值的枚举常量。
String toString():返回此枚举常量的字符串格式。
例:
enum Color
{
RED, GREEN, BLUE;
}
public class Test
{
public static void main(String[] args)
{
// 调用 values()
Color[] arr = Color.values();
// 迭代枚举
for (Color col : arr)
{
// 查看索引
System.out.println(col + " at index " + col.ordinal());
}
// 使用 valueOf() 返回枚举常量,不存在的会报错 IllegalArgumentException
System.out.println(Color.valueOf("RED"));
// System.out.println(Color.valueOf("WHITE"));
}
}
输出:
RED at index 0
GREEN at index 1
BLUE at index 2
RED
六、注解
1.注解
注解主要用于告知编译器要做什么事情。 注解并不影响程序代码的运行
例如:
七、Lambda 表达式语法
1.->
->是Lambda运算符,可以表达成“成了”或“进入”。
例如:
1. 不需要参数,返回值为 5
() -> 5
2. 接收一个参数(数字类型),返回其2倍的值
x -> 2 * x
3. 接受2个参数(数字),并返回他们的差值
(x, y) -> x – y
4. 接收2个int型整数,返回他们的和
(int x, int y) -> x + y
5. 接受一个 string 对象,并在控制台打印,不返回任何值
(String s) -> System.out.print(s)
2.方法引用
2.1.格式:目标引用+分隔符::+方法