包
相同包下的类可以直接访问,不同包下的类必须导包,才可以使用!导包格式:import 包名.类名;
假如一个类中需要用到不同类,而这个两个类的名称是一样的,那么默认只能导入一个类,另一个类要带包名访问。
权限修饰符
有四种作用由小到大(private -> 缺省 -> protected -> public)
修饰符 | 同一 个类中 | 同一个包中其他类 | 不同包下的子类 | 不同包下的无关类 |
private | √ | |||
缺省 | √ | √ | ||
protected | √ | √ | √ | |
public | √ | √ | √ | √ |
final
final的作用
final关键字是最终的意思,可以修饰(类、方法、变量)。
修饰类:表明该类是最终类,不能被继承。(可以用于工具类)
修饰方法:表明该方法是最终方法,不能被重写。
修饰变量:表示该变量第一次赋值后,不能再次被赋值(有且仅能被赋值一次)。
final修饰变量的注意
final修饰的变量是基本类型:那么变量存储的数据值不能发生改变final修饰的变量是引用类型:那么变。
量存储的地址值不能发生改变,但是地址指向的对象内容是可以发生变化的。
常量
常量是使用了public static final修饰的成员变量,必须有初始化值,而且执行的过程中其值不能被改变。
常量的作用和好处:可以用于做系统的配置信息,方便程序的维护,同时也能提高可读性。
枚举
public enum Orien{
UP,DOWN; //定义了两个枚举值,可以通过Orien.枚举值 调用
}
枚举的代码相对于常量可读性好更好,入参严谨,是最好的信息分类技术。
抽象类
//抽象类
public abstract class Animal{
private abstract void ren(); // 抽象方法,不能写方法代码。
}
在Java中abstract是抽象的意思,可以修饰类、成员方法。
abstract修饰类,这个类就是抽象类;修饰方法,这个方法就是抽象方法。
注意事项
抽象方法只有方法签名,不能声明方法体。
个类中如果定义了抽象方法,这个类必须声明成抽象类,否则报错。
类有的成员(成员变量、方法、构造器)抽象类都具备。
抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类个类。
一个继承了抽象类必须重写完抽象类的全部抽象方法,否则这个类也必须定义成抽象类。
最重要的特征:得到了抽象方法,失去了创建对象的能力(有得有失)
final和abstract是互斥关系
使用场景
抽象类可以理解成不完整的设计图,一般作为父类,让子类来继承。
接口
接口是一种规范(约束),规范一定是公开的(public abstract等可以省略不写)。
实现接口:implements 接口名1,接口名2(可以理解为可以有多个爸的子类)
基本小结
类和类的关系:单继承。
类和接口的关系:多实现。
接口和接口的关系: 多继承,一个接口可以同时继承多个接口。(整合多个接口为一个接口,便于子类调用)
jdk8开始后新增了那些方法?
默认方法:default修饰,实现类对象调用
静态方法:static修饰,必须用当前接口名调用
私有方法:private修饰,jdk9开始才有的,只能在接口内部被调用