一、包
概念: 用来分类代码功能,有利于程序的管理和维护。
建包格式: 【package 包路径】
包路径的格式规则: 英文小写以及具备意义,通常放在一个文件的第一
行。
导入程序包: 相同包下的类可以直接访问,不同包下的类必须导包。
导包格式: 【import 包名.类名】
导包注意事项: 导包默认只能导入一个包,当导入不同包的相同类名时,第二个包采用全名访问。
二、权限修饰符
概念: 是控制一个成员能够被访问的范围。
作用对象: 成员变量、方法、构造器、内部类,不同权限修饰符修饰的成员能够被访问的范围被限制。
权限类型: private -> 缺省 -> protected -> public
- private: 同类可访问,不可被继承。
- 缺省: 同包下可访问
- protected: 同包或不同包的子类可访问,子类可继承。
- public: 所有包下的所有类都可访问,子类可继承。
权限修饰的通用原则:
1、成员变量私有化。
2、方法公开化。
3、本类访问private。
4、本包与子类访问protected。
三、final关键字
概念: final翻译为最终的。
作用对象: 类、方法、变量
- final类: 表明最终类,不可继承。
- final方法: 表明最终方法,不可重写。
- final变量: 表明常量,不可赋值。
作用场景: 不希望被修改成员的场景。
注意事项:
1、final修饰的基本数据类型,其数据值不变。
2、final修饰的引用数据类型,其地址值不变,数据值可变。
四、常量
概念: 使用了public static final 修饰的成员变量,必须初始化,而且执行过程中不可改变数据值。
作用: 用于系统配置信息,方便程序维护,同时提高程序可读性。
格式: 【public static final 数据类型 变量名 = 值】
常量命名规范
- 英语单词全部大写
- 多单词下划线连接
执行原理
- 在编译阶段进行“宏替换”(就是C语言中的预编译),将使用的常量替换为字面量。
- 优势在于执行性能与直接使用字面量相同,一处改动,处处改动。
实例:
public class Constant{
public static final String SCHOOL_NAME = "xxx";
}
五、枚举
概念: 枚举是Java的一种特殊类型。
作用: 为了做信息的标志和信息的分类。
格式: 【修饰符 enum 枚举名称{ 枚举类实例名称列表 }】
特征
- 枚举类都继承了java.lang.Enum类
- 枚举是最终类,不能被继承
- 构造器是私有的,枚举不对外创建对象
- 枚举类第一行默认都是枚举对象的名称
六、抽象类
概念: Java中abstract翻译为抽象。
作用: 为了给子类提供相应的模板,因此创建了抽象类,具体实现交给子类完成。
作用对象: 类、成员方法
- abstract类: 表示抽象类
- abstract方法: 表示抽象方法
格式:
修饰符 abstract class 类名{
修饰符 abstract 返回值类型 方法名称(形参列表);
}
特征和注意事项
- 抽象类不能实例化。
- 类有的成员,抽象类都具备。
- 抽象类不一定有抽象方法,包含抽象方法的类一定是抽象类。
- 抽象方法只有方法名,不声明方法体。
- 一个类定义了抽象方法,则这个类必须声明为抽象类。
- 一个类继承了抽象类,要么重写全部抽象方法,要么定义为抽象类。
设计模式(2):模版设计模式
- 使用场景: 当一个功能多处开发,而功能的大部分代码相同,只有小部分内容不同的场景。
- 实现步骤: 保留公共部分,其余可自定义部分声明为抽象方法,交于子类实现。
- 注意事项: 模板方法使用final进行修饰,以避免子类直接重写方法,导致方法改变。
- 示例:
模板类Student.java
public abstract class Student {
/**
* 公用方法
* */
public final void write(){
System.out.println("这里是公共部分");
System.out.println(writePrivate());
}
/**
* 自定义方法
* */
public abstract String writePrivate();
}
子类StudentExtend.java
public class StudentExtend extends Student{
private String content;
@Override
public String writePrivate() {
return content;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
}
测试类
StudentExtend student = new StudentExtend();
student.setContent("私有部分1");
student.write();
StudentExtend student2 = new StudentExtend();
student2.setContent("私有部分2");
student2.write();
测试结果
这里是公共部分
私有部分1
这里是公共部分
私有部分2
七、接口
概念: 接口是公开的规范。
关键字:interface
格式:
public interface 接口名{
//常量;
//抽象方法
}
使用方式:
- 关键字:implements(用复数形式,是因为Java可以实现多接口)
- 格式:
修饰符 class 实现类名 implements 接口1,接口2,...{
实现代码...
}
- 注意事项: 定义了多少个抽象方法,就必须实现多少个方法。
接口与接口之间的关系:多继承
接口多继承的作用: 规范合并,便于子类实现。
接口新增方法(JDK8往后版本):
允许接口直接定义具体实现方法。文章来源:https://www.toymoban.com/news/detail-461612.html
-
默认方法
采用关键字 “default” 修饰方法
注意: 接口的静态方法必须用本身的接口名调用。该类方法只能继承给子类进行使用,无法重写。
以下是默认方法的格式:
default 返回类型 方法名(参数列表){
方法体;
}
-
静态方法
访问默认使用public修饰,方法类型必须采用关键字 “static” 修饰
注意: 接口的静态方法必须用本身的接口名调用。
以下是静态方法的格式:
访问符 static 方法名(参数列表){
方法体;
}
-
私有方法(JDK1.9开始支持)
实质是私有化实例方法,必须使用 private 修饰
注意: 接口的静态方法必须用本身的接口名调用。私有化后只能在本类中被其它默认方法或私有方法访问。
以下是私有方法的格式:
private 返回类型 方法名(){
方法体;
}
接口注意事项
1、接口不能实例化(它自己就是抽象的)。
2、一个类多态实现接口,接口中的相同静态方法不冲突(反正都是共享的)。
3、一个类可以继承类同时实现接口,同名方法默认使用父类的。
4、一个类实现多个接口,同名默认方法不冲突,重写方法即可(重复了就干掉,自己写)。
5、一个接口可以继承多个接口,若发生规范冲突则不能多继承。文章来源地址https://www.toymoban.com/news/detail-461612.html
到了这里,关于Java学习路线(9)——包、权限、常量、枚举、抽象类、接口的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!