1. final
final是java中的一个关键字,表示最终的,不可变的,final可以修饰变量方法还有类。
如果给类添加final关键字,则类无法继承。
final修饰的方法无法被重写和覆盖。
final修饰的局部变量,一旦赋值不能重新被赋值。只能赋一次值
final修饰的引用:
该引用只能指向1个对象,并且它只能永远指向该对象。无法指向其他对象,并且在该方法执行过程中,该引用指向对象之后,该对象不会被垃圾回收器回收。直到当前方法结束,才会释放空间。
final修饰的实例变量,系统不管赋默认值,要求程序员必须手动赋值。
final int age;//编译错误 final double height =1.8 //编译可以通过 final double height; public user(){ this height=80; } //编译可以通过
结论:final修饰的实例变量,系统不管赋默认值,要求程序员必须手动赋值。这个手动赋值,在变量后面赋值也行,在构造方法中赋值也行。
2.抽象类
Q:什么是抽象类?
A:类和类之间具有共同特征,将这些共同特征提取出来,形成的就是抽象类。类本身是不存在的,所以抽象类无法创建对象《无法实例化》
Q:抽象类属于什么类型?
抽象类也属于引用数据类型
Q:抽象类怎么定义?
语法:
[修饰符列表] abstract class 类名{
类体;
}
抽象类是无法实例化的,无法创建对象的,所以抽象类是用来被子类继承的。
final和abstract不能联合使用,这两个关键字是对立的。
抽象类的子类可以是抽象类。抽象类虽然无法实例化,但是抽象类有构造方法,这个构造方法是供子类使用的。
抽象类关联到一个概念:抽象方法,什么是抽象方法?
抽象方法表示没有实现的方法,没有方法体的方法,例如:
public abstract void dosome();
抽象方法的特点是:
特点1:没有方法体,以分号结尾。
特点2:前面修饰符列表中有abstract关键字。
抽象类中不一定有抽象方法,抽象方法必须出现在抽象类中。
一个非抽象的类继承抽象类,必须将抽象类中的抽象方法实现了。这是java语法中强行规定的,必须的,不然编译器就会报错。
3.接口
接口也是一种引用数据类型。
接口是完全抽象的(抽象类是半抽象)或者也可以说接口是特殊的抽象类
接口怎么定义?语法是什么?
[修饰符列表] interface 接口名{
接口只支持多继承,一个接口可以继承多个接口
接口只包含两部分内容:一部分是常量,一部分是抽象方法
接口中的所有内容都是由public修饰的(都是公开的)
接口中抽象方法定义时,public abstract修饰符可以省略
接口中的方法都是抽象方法,所以接口中不能有方法体。
接口中的常量的public static final可以省略
接口的基础语法:
类和类之间可以继承,类和接口之间叫做实现。
继承使用extends关键字实现。
实现使用implements关键字完成。
当一个非抽象的类实现接口的话,必须将接口中的所有抽象方法全部实现(覆盖/重写)。
接口和接口在没有继承关系的时候也可以强转,但是可能会出现ClassCastException。.
继承和实现都存在的话,代码应该怎么写?
extends 关键字在前
implements 关键字在后
接口在开发中的作用:类似于多态在开发中的作用
多态:面向抽象编程,不要面向具体编程,降低程序的耦合度,提高扩展力。
类型和类型之间的关系:
is a has a like a
is a
Cat is a animal(猫是一个动物)
凡是满足is a的都是继承关系
has a
He has a pan(他有一支笔)
凡是满足has a的都是关联关系
关联关系通常以"属性“的形式存在
like a
chef like a menu(厨师像菜单)
凡是能满足like a的表示实现关系
实现关系通常是:类实现接口
4.包
关于java中的package和import机制
Q:为什么要使用package?
A:package是java中包机制。包机制的作用是为了方便程序的管理。不同功能的类分别存放在不同的包下。
Q:package怎么用呢?
A:package是一个关键字,后面加包名。例如:
package com.xiaoxiongbingqilin.javase.06;
注意: package语句只允许出现在java源代码的第一行。
Q:包名有没有命名规范?
A:一般都采用公司名字倒叙的方式(因为公司域名具有全球唯一性)
Q:对于带有package的java程序怎么编译?怎么运行?
A:采用以前的编译形式不行了,类名不再是 HelloWorld了
类名是package com.xiaoxiongbingqilin.javase.06.HelloWorld;了
或者java -d . HelloWorld.java
javac:负责编译的命令
-d:带包编译
. 代表编译之后生成的东西放到当前目录下(点代表当前目录)
HelloWorld.java 被编译的java文件名
5. import
关于import的使用:
Q:import什么时候使用?
A:A类中使用B类
A和B类在同一个包下,不需要使用import
A和B类不在同一个包下,需要使用import
Q:import怎么用?
A:import语句只能出现在package语句下,class语句上
import还可以采用*号的方式
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端