一、
abstract[
抽象的
]
1.
可以修饰类:
(1)
多态应用在形式参数上:本类型
+
所有子类型
的对象、引用都可以作为实际参数进行传递
(2)
多态应用在返回值上:本类型
+
所有子类型的
对象、引用都可以作为返回值进行返回
(1)
被
abstract
修饰的类称为抽象类
(2)
语法:
abstract class
类名
{}
(3)
特点:抽象类可以声明引用,但是不能创建对
象
(4)
注意:抽象类中可以定义属性、成员方法、构
造方法
2.
可以修饰方法:
3.
抽象类可以定义子类:
二、
static [
静态的
]
1.
可以修饰属性:
(1)
被
asbtract
修饰的方法称为 抽象方法
(2)
语法:
访问修饰符
abstract
返回值类型 方法名
(
形参
);
注意:访问修饰符 和
asbtract
没有先后的
顺序
(3)
特点:抽象方法只有方法的声明部分,没有方
法的实现
(4)
注意:抽象方法只能定义在抽象类中
(1)
语法:
class
类名
extends
抽象类类名
{}
abstract class
类名
extends
抽象类
类名
{}
(2)
注意:如果子类不想定义为抽象类,则必须覆
盖抽象的父类中所有的抽象方法
(1)
被
static
修饰的属性称为静态属性、静态变
量、类变量
(2)
语法:
static
数据类型 变量名
;
static
数据类型 变量名
=
值
;
(3)
特点:静态属性基于类而存在,和创建多少对
象无关,所有的对象共享同一份
(4)
使用:
a.
可以通过 对象名
.
静态属性名
b.
可以直接通过 类名
.
静态属性名
-
》建议
2.
可以修饰方法
(1)
被
static
修饰的方法称为静态方法
(2)
语法:
访问修饰符
static
返回值类型 方法名
(
形
参
){}
(3)
注意:访问修饰符 和
static
之间没有先后
顺序
(4)
使用:类名
.
静态方法名
(
实参
);
(5)
静态方法中只能访问本类的静态成员
(6)
静态方法中不能使用
this/super
关键字
思考:
System.out.println();
实现原理?
System :
类
out :
静态属性
-
》 对象,被
static
println: -
》方法
3.
可以修饰代码块
(1)
被
static
修饰的代码块 称为静态代码块
(2)
语法:
class
类名
{
static{}
}
(3)
作用:在类加载的时候,按照和静态属性定义
的先后顺序完成静态属性的初始化工作
(4)
类加载:当
jvm
第一次使用一个类的时候,
通过
classpath
找到对应的
.class
文件,对文件
进行读取,读取该类的相关信息
(
包、类、父类、属
性、方法、构造方法等
)
,将读取到的信息保存到
jvm
内存中,一个类 类加载只进行一次。
(5)
类加载的时机
(
什么叫第一次使用一个类
)
a.
第一次访问该类的静态成员
(
静态属性、
方法
)
b.
第一次创建该类对象:
先进行类加载,再完成对象的创建
c.
子类类加载,会导致其父类先类加载
三、
final[
最终的、最后的
]
1. final
可以修饰变量
(
局部变量、实例变量、静态
变量)
(1)
被
final
修饰的变量作用范围内的常量
(2)
语法:
final
数据类型 变量名
;
final
数据类型 变量名
=
值
;
(3)
被
final
修饰的引用,存储的对象不允许改
变
2. final
可以修饰方法:被
final
修饰的方法能被子类
继承,但是不能被覆盖
3. final
可以修饰类:被
final
修饰的类不能被继承,
没有子类
第十章:接口
一、理解
1.
接口:是一种标准,接口的实现者和使用者都必
须遵循的约定。
2.
语法特点:
二、实现类
1.
实现类的语法:
(1)
接口的关键字:
interface
(2)
接口的语法:
interface
接口名
{}
(3)
接口不能创建对象,可以声明引用
(4)
接口中的属性都是公开的、静态的、常量
(
默
认被
public
、
static
、
final
修饰
)
(5)
接口中没有构造方法
(6)
接口中的方法都是公开、抽象方法
(
默认被
public
、
asbtract
修饰
)
class
类名
implements
接口名
{}
abtract class
类名
implements
接口名
{}
2.
实现类的注意:
三、接口的继承性
1. java
中的接口是多继承
2.
类和接口之间多实现关系
(1)
实现类不想成为抽象类,则需要覆盖接口中所
有的抽象方法
(2)
实现类覆盖接口中的方法时,访问权限必须是
public
(1)
一个类同时可以实现多个接口
(2)
语法:
class
类名
implements
接口名
1,
接口名
2{}
(3)
注意:如果一个类实现多个接口,需要把所有
接口中抽象方法全部覆盖
(
包括父接口中的
)
(1)
语法:
class
类名
extends
父类
implements
接口名
1,
接口名
2{}
(2)
注意:一个类实现多个接口的同时,允许继承
一个父类,但是必须继承在前,实现在后
四、接口多继承的影响
1.
由于接口的多继承性,让多态更加的多样性
2.
以接口类型的引用调用方法时,只能调用该接口
中声明的方法
五、高版本
Jdk
语法补充
1. JDK8.0
开始 ,接口中可以定义默认方法和静态
方法。
2. JDK9.0
开始,接口中可以定义私有方法。
(1)
默认方法:
default
返回值类型 方法名
(
形参列表
){ //
方
法实现
}
注意:带有方法实现的非静态方法必须加
default
;默认访问权限为
public
(2)
静态方法:
public static
返回值类型 方法名
(
形参列表
)
{
//
方法实现 }
注意:静态方法没有写访问修饰符,默认为
public
六、接口的分类
1.
常量接口:接口中只有静态常量,没有定义任何
方法,应用不广泛
2.
标记接口:空接口,接口中没有定义任何的属性
和方法。
3.
普通接口:具有至少一个抽象方法的接口。
4.
函数式接口:接口中只有一个抽象方法,对静态
方法和默认 方法没有要求。
[
用于
lambda
表达