本帖最后由 LongJL 于 2021-7-12 21:32 编辑
抽象
概述
将共性的行为(方法)抽取到父类之后,发现该方法的实现逻辑无法在父类中给出具体明确,该方法就可以定义为抽象方法。
抽象类
如果一个类中存在抽象方法,那么该类就必须声明为抽象类
- 抽象方法:就是加上abstract关键字,然后去掉大括号,直接分号结束
- 抽象类:抽象方法所在得类,必须是抽象类才行。在class之前写上abstract即可。
public abstract class Animal {
//这是一个抽象方法,代表吃东西,但是具体吃什么(大括号得内容)不确定。
public abstract void eat();
}
在任何版本的Java中,接口都能定义抽象方法
格式:
- public abstract 返回值类型 方法名称(参数列表);
注意事项:
- 抽象类不能创建对象
- 抽象类中有构造方法
- 抽象类的子类
A:必须要重写父类中所有的抽象方法
B:可以把自己也变成一个抽象类
- 抽象类种的方法
抽象类中可以没有抽象方法,但是有抽象方法的类一点是抽象类
拓展
模板设计模式
-
设计模式( Design pattern )是一套被反复使用,经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性 。
-
模板设计模式:把抽象类整体可以看做成一个模板,模板中不能绝对的对象定义成抽象方法让使用模板的类(继承抽象类的累)去重写抽象方法实现需求
final关键字
用法
1.可以用来修饰一个类
格式:
public final class 类名称{
//....
}
含义:
当前这个类不能有任何子类。不能被继承
注意:
一个类如果是final那么其中的所有成员方法都无法覆盖重写
2.可以用来修饰一个方法
当final关键字用来修饰一个方法的时候,这个方法就是最终方法,也就是不能被覆盖重写。
注意:对于类和方法来说,abstract关键字和final关键字不能同时使用,因为矛盾。
3.可以用来修饰一个局部变量
表面该变量是常量,不能再次被赋值
4.可以用来修饰一个成员变量
初始化:
1.在创建的时候,直接给值
2.在构造方法结束之前,完成赋值
注意事项:
1.一旦使用了final关键字修饰,说明不可改变
2.对于引用类型来说值可以改变,地址值不能改,但是地址值指向的内容可以改变!
3.常量的命名规范:如果是一个单词,所有字母大写,如果是多个单词,所有字母大写,但是中间需要使用"_"分割
局部代码块
位置:方法中定义
作用:限定变量的声明周期,及早释放,提供内存利用率
public class Test{
public static void main(String[] args){
{
int a = 10;
System.out.println(a); // 10
}
System.out.println(a); // 报错
}
}
构造代码块
位置:类中方法外定义
特点:每次构造方法执行的时候,都会执行该代码块中的代码,并且在构造方法中执行前执行
作用:将多个构造方法中相同的代码,抽取到构造代码块中,提供代码的复用性
public class Test{
public static void main(String[] args){
Student stu1 = new Student();
Student stu2 = new Student(10);
// 我是构造代码块
// 空参数构造方法
// 我是构造代码块
// 带参数构造方法
}
}
class Student{
{
System.out.println("我是构造代码块");
}
public Student(){
System.out.println("空参数构造方法");
}
public Student(int a){
System.out.println("带参数构造方法");
}
}
# 抽象.zip
(1.9 KB, 下载次数: 6)
|