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】 【码云】