1.static(静态)
①修饰成员变量
有stati修饰:类变量(在计算机里只有一份,会被类的全部对象共享)
某个数据只需要一份,且希望能够被共享(访问,修改),则该数据可以被定义成类变量来记住。
⭐类名.类变量
static String name;
无stati修饰:实例变量(属于每个对象的)
⭐对象.实例变量
int age;
②修饰成员方法
有stati修饰:类方法,属于类
⭐类名.类方法
无stati修饰:实例方法,属于对象
⭐对象.实例方法
2.继承(extends)
让一个类与另一个类建立起父子关系。
特点:
子类能继承父类的非私有成员(public:成员变量/方法)
3.方法重写
当子类觉得父类中的某个方法不好用,或者无法满足自己的需求时,子类可以重写一个方法名称,参数列表一样的方法,去覆盖父类的这个方法。
重写后,方法的访问,java会遵循就近原则
⭐注意事项:
①使用@Override注解
②子类重写父类方法时,访问权限必须大于或等于父类该方法的权限
③重写方法的返回值类型,必须与被重写方法的返回值类型一样,或者范围更小
④私有方法,静态方法不能被重写
⭐常见应用常见
子类重写Object类的toString()方法,以便返回对象的内容
4.子类中访问其他成员的特点
①在子类方法中访问其他成员(成员变量,成员方法),是依照就近原则的
②在子类中指定访问父类的成员:super.父类成员变量/父类成员方法
5.子类构造器的特点
子类的全部构造器,都会先调用父类的构造器,再执行自己
6.多态
①前提
⭐有继承/实现关系
⭐存在父类引用子类对象
⭐存在方法重写
②问题
多态下不能直接调用子类的独有方法
7.多态下的类型转换问题
①类型转换
强转前,Java建议:
使用instanceof关键字,判断当前对象的真实类型,再进行强转
p instanceof Student
8.final
①修饰类:最终类,不能被继承了
②修饰方法:最终方法,不能被重写了
③修饰变量:该变量只能被赋值一次
9.常量
使用了static final修饰的成员变量就被称为常量
作用:通常用于记录系统的配置信息
命名规范:使用大写英文单词,多个单词使用下划线连接
public static final String SCHOOL_NAME = "传智教育";
10.抽象类(abstract)
abstract修饰类,这个类就是抽象类
abstract修饰方法,这个方法就是抽象方法(不能有方法体)
⭐
①抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类
②抽象类不能创建对象,仅作为一种特殊的父类,让子类继承并实现
③一个类继承抽象类,必须重写完抽象类的全部抽象方法,否则这个类也必须定义成抽象类
④场景和好处:父类知道每个子类都要做某个行为,但每个子类要做的情况不一样,父类就定义成抽象方法,交给子类去重写实现。
11.接口(interface)
⭐接口不能创建对象;接口是用来被类实现的,实现接口的类称为实现类
一个类可以实现多个接口,实现类实现多个接口,必须重写完全部接口的全部抽象方法,否则实现类需要定义成抽象类
⭐
继承是单继承,实现是多实现
接口不能继承,只能实现
12.接口的多继承及注意事项
13.泛型
可以避免强制类型转换,及其可能出现的异常
本质:把具体的数据类型作为参数传给类型变量
// <String>:list里面只能放String类型的数据
ArrayList<String> list1 = new ArrayList<>();
list1.add("java1");
list1.add("java2");
list1.add("java3");
for (int i = 0; i < list1.size(); i++) {
// 遍历出来的数据交给String
String e = list1.get(i);
System.out.println(e);
}
⭐泛型不支持基本数据类型,只能支持引用数据类型