1 注解
@Override
是一个注解,可以帮助我们检查重写方法的方法声明的正确性
注意:
- 私有方法不能被重写(父类私有成员子类是不能继承的)
- 子类方法访问权限不能更低(public > 默认 > 私有)
2 包
说明:包即文件夹,作用是对类进行分类管理
格式:package 包名;(多级包用.分开,eg: package p1.p2;)
手动建包:
- 按照之前的格式编译java文件, javac HelloWord.java
- 手动创建包,根据包创建对应的文件夹
- 把对应的class文件放到包的最里面
- 带包执行
自动建包: javac -d . HelloWorld.java
导包快捷键:alt enter
3 权限修饰符
修饰符 | 同一个类中 | 同一个包中子类无关类 | 不同包的子类 | 不同包的无关类 |
---|---|---|---|---|
private | √ | |||
默认 | √ | √ | ||
protected | √ | √ | √ | |
public | √ | √ | √ | √ |
4 状态修饰符
1. final
说明:final关键字是最终的意思,可以修饰成员方法,成员变量,类
特点:
- 修饰方法,表明该方法是最终方法,不能被重写;
- 修饰变量,表明该变量是常量,不能被再次赋值;
- 修饰类,表明该类是最终类,不能被继承
注意:修饰基本类型,数据值不能改变。修改引用类型,则地址值不能改变。但是地址里面的内容是可以改变的。
2. static
说明:static关键字是静态的意思,可以修饰成员方法,成员变量
特点:
- 被类的所有对象共享
- 可以通过类名调用,也可以通过对象名调用。推荐用类名调用。
访问特点:静态成员方法只能访问静态成员
5. 多态
说明: 同一个对象,在不同时刻表现出来的不同形态
形式: 父类 对象 = new 子类();
特点:
- 有继承/实现关系
- 有方法重写
- 有父类引用指向子类对象
多态中成员访问特点(成员方法有重写)
- 成员变量:编译看左边,执行看左边(父类)
- 成员方法:编辑看左边,执行看右边(子类)
好处:提高了程序的扩展性。在定义方法的时候,使用父类型作为参数,在使用的时候,使用具体的子类型参与操作。
缺点:不能使用子类的特有功能
6.抽象类
说明:一个没有方法提的方法应该定义为抽象方法,而类中如果有抽象方法,该类必须定义为抽象类
特点:
- 抽象类和抽象方法都必须用abstract关键字修饰
- 抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类
- 抽象类不能实例化,但可以通过子类对象实例化,这叫抽象类多态
- 抽象类的子类要么重写抽象类的所有抽象方法,要么是抽象类
成员特点:
- 抽象类成员变量可以是变量,也可以是常量
- 有构造方法,但是不能实例化,构造方法用于子类访问父类数据的初始化
- 可以有抽象方法,用于限定子类必须完成某些动作,也可以有非抽象方法,提高代码的复用性
7.接口
说明:接口就是一种公共的规范标准,只要符合规范标准,大家都可以通用。Java中的接口更多的体现在对行为的抽象
特点:
- 接口用关键字interface修饰:public interface 接口名{}
- 类实现接口用implements表示:public class 类名 implements 接口名 {}
- 接口不能实例化,但可以通过实现类对象实例化,这叫接口多态
- 接口的实现类,要么重写接口中的所有抽象方法,要么是抽象类
成员特点:
- 成员变量只能是常量,默认修饰符是 public static final
- 接口中没有构造方法,因为接口主要是对行为进行抽象的,是没有具体存在一个类。如果没有父类,默认继承自Object类
- 成员方法只能是抽象方法,默认修饰符是 public abstract
类和接口的关系:
- 类和类:继承关系,只能单继承,但是可以多层继承
- 类和接口:实现关系,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口
- 接口和接口:继承关系,可以单继承,也可以多继承
抽象类和接口的区别:
成员区别:
- 抽象类: 变量,常量;有构造方法;有抽象方法,也有非抽象方法
- 接口 : 常量;抽象方法
设计理念区别:
- 抽象类: 对类抽象,包括属性、行为
- 接口: 对行为抽象,主要是行为
8.内部类
说明:内部类就是在类中定义一个类。
定义格式:public class 类名 {
修饰符 class 类名 { // 内部类
}
}
访问特点:
- 内部类可以直接访问外部类的成员,包括私有
- 外部类要访问内部类的成员,必须创建对象
使用格式(不常用)
外部类名.内部类名 对象名 = 外部类对象.内部类对象;