【自学笔记】 Java基础 - 抽象及一些拓展知识
本帖最后由 LongJL 于 2021-7-12 21:32 编辑# 抽象
## 概述
将共性的行为(方法)抽取到父类之后,发现该方法的实现逻辑无法在父类中给出具体明确,该方法就可以定义为抽象方法。
## 抽象类
如果一个类中存在抽象方法,那么该类就必须声明为抽象类
- 抽象方法:就是加上abstract关键字,然后去掉大括号,直接分号结束
- 抽象类:抽象方法所在得类,必须是抽象类才行。在class之前写上abstract即可。
```Java
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.常量的命名规范:如果是一个单词,所有字母大写,如果是多个单词,所有字母大写,但是中间需要使用"\_"分割
## 局部代码块
位置:方法中定义
作用:限定变量的声明周期,及早释放,提供内存利用率
```Java
public class Test{
public static void main(String[] args){
{
int a = 10;
System.out.println(a); // 10
}
System.out.println(a); // 报错
}
}
```
## 构造代码块
位置:类中方法外定义
特点:每次构造方法执行的时候,都会执行该代码块中的代码,并且在构造方法中执行前执行
作用:将多个构造方法中相同的代码,抽取到构造代码块中,提供代码的复用性
```Java
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("带参数构造方法");
}
}
```
final关键字那一块的缩进我在编辑看是有的,不知道为什么在这就没了我用Typora编辑也是正常的{:301_977:} 感谢版主分享,正好需要 最近也在自学JAVA,不知道楼主有什么好好的教程和书籍推荐吗? fen885588 发表于 2021-7-12 23:15
最近也在自学JAVA,不知道楼主有什么好好的教程和书籍推荐吗?
我现在看得是黑马得教程这个在52上面有得你可以找找,书籍得话我自己有一本Java从入门到精通,朋友推荐Java核心技术·卷 I(原书第11版) 和Java核心技术·卷 Ⅱ(原书第11版) 看着都还不错 这个在52上面也有PDF版得 感谢分享,正想学习一下。 一抹浅笑乱流年 发表于 2021-7-13 09:24
感谢分享,正想学习一下。
{:301_997:}共同加油 目前正在自学中,感谢楼主分享。 LongJL 发表于 2021-7-13 08:11
我现在看得是黑马得教程这个在52上面有得你可以找找,书籍得话我自己有一本Java从入门到精通,朋友推荐Java ...
看教程 记笔记 这样子吗.. fen885588 发表于 2021-7-13 13:07
看教程 记笔记 这样子吗..
有的时候去翻翻API的文档什么的
页:
[1]