1. 包
1.1 什么是包
- 包次要是分门别类的来治理类,相似于文件夹。
- 建包语法:package 公司域名. 技术名称,倡议全副小写
- 建包语句必须在第一行
1.2 导包
- 雷同包下类能够间接拜访,不通包下能够通过导包援用类。
- 如果须要导雷同类,在类上只能导入一个包门路,类中如果须要再援用雷同类须要应用全路径名:包名. 类名();
- 格局:import 包名. 类名 / import 包名. 类名
2. 权限修饰符
权限修饰符是来润饰成员拜访的范畴,权限修饰符能够润饰成员变量,结构器,办法和外部类。
权限修饰符拜访范畴如下:
修饰符 | 同一类 | 同一包中其余类 | 不同包下子类 | 不同包下无关类 |
---|---|---|---|---|
private | √ | |||
缺省 | √ | √ | ||
protected | √ | √ | √ | |
public | √ | √ | √ | √ |
3. final 和常量
3.1 fianl
fianl 示意最终的,能够润饰变量,办法和类
- 润饰变量:该变量仅只能赋值一次
- 润饰办法:该办法为最终办法,不能够被重写
- 润饰类:该类为最终类,不能被继承
注意事项:
润饰根底类型:被第一次赋值后不能被扭转。
润饰援用类型:对象援用地址不能被扭转,但地址对象外部信息能够批改。
示例:
public class FinalTest {
public static final int num = 10;
public static final Dog dog = new Dog("二哈", 10);
public static void main(String[] args) {System.out.println(num);
System.out.println(dog.getName());
// 程序报错
// num = 20;
dog.setName("三哈");
System.out.println(dog.getName());
}
}
3.2 常量
- 常量是应用 public static final 润饰的变量,必须初始化值并且在执行过程中不能批改值。
- 常量罕用于文件配合,进步代码可读性,便于前期保护。
- 常量命名标准:单词名称大写,多个单词之间应用下划线连贯
执行原理:
在编译过程进行替换,会把所有常量替换成字面量。
替换成字面量进步执行的效率。
4. 枚举,接口和抽象类
4.1 枚举(enum)
枚举是 java 的一种非凡类型,是为了做信息的标记和分类
格局:
修饰符 enum 枚举类型 {...}
示例:
public enum Direction {UP("向上", 1),
DOWN("向下", 2),
LEFT("向左", 3),
RIGHT("向右", 4);
private String name;
private int flag;
private Direction(String name, int flag) {
this.name = name;
this.flag = flag;
}
public String getName() {return name;}
public void setName(String name) {this.name = name;}
public int getFlag() {return flag;}
public void setFlag(int flag) {this.flag = flag;}
}
枚举的特色:
- 枚举类都是继承 java.lang.Enum
- 枚举类是最终类,不能够被继承
- 结构器都是公有,不能被实例化
- 枚举类第一行默认都是写枚举类对象的名称
4.2 接口(interface)
java 中的接口是一种标准,相似于生存当中的接口。比方当初市面上的 Type- C 充电口,这就是一种标准,大家都依照这样设计,那样的话就能够通用。束缚了统一的内容也凋谢了自定义实现。
4.2.1 定义格局
修饰符 interface 类名 {...}
4.2.2 特点
- JDK8 前外部只能有形象办法和常量(上面介绍)
- 接口不能实例化
- 接口中的所有成员都是 public,默认是的写不写都是
4.2.3 接口应用(implements)
格局:
修饰符 class 类名 implements 接口类名 1、接口类名 2 …{...
}
- 接口是用来被实现的实现接口的类被称之为实现类,也能够了解为子类,应用关键字 implements
- 接口能够被单实现,也能够被多实现
- 一个类实现接口必须重写所有形象办法,否则实现类为抽象类
- 继承与实现:①类只能单继承 ②类能够多实现 ③接口之间能够实现多继承
4.2.4 JDK8 后接口新标准
当接口被定义下来后,须要很多子类来实现。前期扩大保护时,须要增加新形象办法,这时所有实现类必须都要实现,否则程序编译失败。这样导致呈现很多不必要工作量。JDK8 后新增了新标准。
-
默认办法
办法定义格局相似类成员办法,修饰符必须是 default。该办法须要接口实现类来调用。
示例:
public interface Interface1 {void show();
default int add(int x, int y) {return x + y;}
default int addNum(int x, int y) {return add(x, y);
}
}
public class InterfaceImpl implements Interface1 {
@Override
public void show() {System.out.println("实现了 Interface1 的 show 办法");
int a = addNum(1, 2);
System.out.println("调用抽象类默认办法:" + a);
}
public static void main(String[] args) {InterfaceImpl anInterface = new InterfaceImpl();
anInterface.show();}
}
- 静态方法
静态方法是用 public(默认修饰符)润饰,办法须要增加 static。接口静态方法必须用接口自身进行调用。
// 接口办法,写在 Interface1 接口中
static double getPI() {return 3.14;}
// 执行接口静态方法
Interface1.getPI();
- 公有办法(jdk1.9 后)
办法必须应用 private 润饰,只能在本类被默认和公有办法调用
示例:
private void go(){System.out.println("开始执行接口公有办法");
}
4.2.5 注意事项
- 接口不能实例化对象
- 一个类能够实现多个接口,多个接口中的静态方法不抵触
- 一个类继承父类同时实现多个接口,如果接口和父类呈现同名办法,默认应用父类
- 一个类单继承多实现
4.3 抽象类(abstract)
在 java 中 abstract 是形象的意思,如果一个类中有不确定的办法,须要不同的子类来实现,则能够用 abstract 创立抽象类,只需定义方法名,不须要具体实现。abstract 关键词能够润饰类和办法。
// 抽象类格局
修饰符 abstract 类名 {
}
// 形象办法
修饰符 abstract 返回类型 办法名(形参列表...);
// 示例
public abstract class AbstractTest {public abstract void show();
}
抽象类的特色和注意事项:
- 抽象类不能进行实例化
- 类的成员抽象类都具备
- 抽象类不肯定存在形象办法,存在形象办法的类肯定是抽象类
- 继承抽象类的子类肯定重写形象办法,否则这个类也是抽象类
- abstract 不能润饰成员变量、结构器和代码块
应用场景:
能够把形象办法看成是一个模板,当大部分性能都雷同,然而只有个别性能独特。这时就能够应用抽象类,让使用者继承抽象类重写办法。
抽象类的劣势:
- 进步代码的复用性
- 须要实现的办法定义成形象法,使使用者只须要关怀要实现的性能
-
- *
本章完结,用于集体学习和小白入门,大佬勿喷!心愿大家多多点赞珍藏撑持撑持!
源码【GitHub】【码云】