JAVA—类相关内容整理

一、类

1.类是什么

1.1 类的定义

类是具有相同属性(变量)和行为(方法)的对象的集合,类定义了对象的属性和方法。
1.1 类的基本结构
一个完整的类通常由以下基本结构组成:

包定义语句
import 语句
类的声明{
    成员变量
    构造方法
    成员方法
}

其中类的声明必写,其他可选。

1.2 类的声明

1)主类一定是public;
2)内部类可以是private或者static;

/**
*访问权限修饰符(主类默认为public)可选修饰符(final、abstract、synchronized) class 类名 可选关系描述(implements 类名、extends 类名){
*   类体
*}
**/
public class 类名{
   类体
}
1.3 类的编译

java类的编译是指将 .java 源码文件编译成 .class 二进制字节码文件的过程。
类编译时,如果该类依赖的类没有被编译的话,会先编译依赖的类。
1)源码文件手动编译
在java源码文件所在的目录文件下通过cmd输入以下命令行语句可以实现具体编译及查看编译过程:
PS:如果源码文件中包含中文注(含注释)的话,需要加编码说明,不然会报“错误: 编码GBK的不可映射字符”的错误

/**
 * 生成 .class 文件
 **/
//源码文件中不含中文
源码文件地址 javac 类名
//源码文件中(含注释)包含中文
源码文件地址 javac -encoding UTF-8 类名
//查看编译过程
源码文件地址 javac 类名 -verbose
//运行java文件
源码文件地址 java 类名

在这里插入图片描述
在这里插入图片描述
2)IDEA等自动编译
项目代码部署在IDEA等编译器上,点击项目 运行 按钮,自动生成 .class 文件,存放在 out 文件夹中,查看 .class 文件可以看到自动补全了类的构造函数(如果没有定义的话)
在这里插入图片描述
在这里插入图片描述
3)具体编译过程
类的编译过程需要词法分析器、语法分析器、语义分析器、代码生成器进行解析
在这里插入图片描述

2 特殊类说明

2.1 final 类

2.1.1 类样式

public final class 类名 可选关系描述(implements 类名、extends 类名){
   类体
}

2.1.2 final 类说明
如果类被 final 修饰,则:
1) 表明该类不可被继承,即此类在继承树中为叶子类;
2) 该类的所有方法隐式默认为final;
3) 谨慎设置,适用情况:
A、强安全考虑,类的实现细节不允许有任何改变;
B、类设计之初就确信该类后续不会被扩展;
假设在编译器中定义了一个 final 类,尝试继承时编译器会主动报错:Cannot inherit from final “XXX”
在这里插入图片描述

2.2 抽象类

2.2.1 抽象类的定义
用关键字abstract修饰的类被称为抽象类,

2.2.2 抽象类形态

public abstract class 类名 可选关系描述(implements 类名、extends 类名){
   类体
}

2.2.3 抽象类说明
1)抽象类中可以有抽象方法,也可以有非抽象方法;
2)如果一个类中有抽象方法,那么他一定得被定义成抽象类(报错语句:Abstract method in non-abstract class);
3)抽象父类被子类继承时,子类必须定义抽象父类的抽象方法,非抽象方法可以选择性继承;
4)抽象类中的抽象方法不能有方法体;
5)子类继承抽象父类的方法体时,最好在
2.2.4 抽象类的应用
2.2.5 抽象类与设计模式

2.3 接口类
2.4 内部类

3 常见类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值