1.Static
概述: static代表静态. static可以修饰"方法,变量"
作用:
被static修饰的成员变量: 被类的所有对象共享(所有对象共用一份数据).
被static修饰的成员方法: 可以通过"类名.方法名()"直接调用.
场景:
1.当某个变量,是所有对象共用一份时,则该变量推荐使用静态
2.如果想"不创建对象就能调用方法",则可以设置该方法为静态.
注意:
静态只能访问静态. 一般只有在工具类中,方法才会定义为静态的.
2.多态
2.1 相关概述
概述: 多态指的就是"多种形态",指的是"事物在不同环境下表现出不同的状态".
核心:
1.有继承关系(多态的前提)
2.有方法重写(多态的意义)
3.父类或父接口引用指向子类对象(多态的体现)
应用:
把父类或父接口作为方法参数,调用方法时,可以传递任意的子类对象(提高了代码的扩展性).
2.2 成员特点
成员变量: 编译看左边(父类),运行看左边(父类).
成员方法: 编译看左边(父类),运行看右边(子类).
2.3 优缺点
优点: 父类或父接口作为方法的参数,在调用方法时,可以传递任意子类对象,从而提高代码的扩展性
缺点: 父类或父接口引用指向子类对象,编译都看父类,所以只能使用父类的功能,不能使用子类特有的功能
2.4 多态转型
向上转型: 就是自动类型转换,指的是父类引用指向子类对象
向下转型: 就是强制类型转换,指的是把父类的引用强制转换为子类的引用.
2.4 instanceof
格式: boolean result = 对象 instanceof 类型;
运算:
判断"对象"是否是指定"类型"的对象.
如果是,就返回true.
如果不是,就返回false
3.抽象
3.1 相关概述
概述: abstract表示抽象. 可以修饰类,也可以修饰方法.
概念:
抽象类: 被abstract修饰的类,就称之为"抽象类"
抽象方法: 被abstract修饰的方法,就称之为"抽象方法"
3.2 抽象特点
抽象方法:
1.抽象方法没有方法体
2.抽象方法所在的类必须是抽象类
3.抽象方法可以理解为是一种规则,子类必须重写该抽象方法
抽象类:
1.抽象类不能实例化(不能创建对象)
2.抽象类的子类必须重写抽象类中的所有抽象方法,除非子类也是抽象类.
4.接口
4.1 概述
概述: 接口是一种比抽象类更加抽象的类层次结构
格式:
定义格式: public interface 接口名 { ... }
使用格式: public class 子类 implements 接口名{}
注意:
子类实现接口后,必须重写接口中的所有抽象方法,除非子类也是抽象类
4.2 成员
变量: 只能是静态常量. 默认访问修饰符是 public static final
方法: 只能是抽象方法. 默认访问修饰符是 public abstract
构造: 接口没有构造方法.
5.相关补充
5.1 类和接口的关系
类和类之间: 继承关系,只能单继承,不能多继承,但可以多层继承.
类和接口之间: 实现关系.可以单实现,也可以多实现,还可以继承一个类的同时,实现接口.
接口和接口之间: 继承
1.接口新特性
① 默认方法(掌握)
概述: JDK8之后接口可以有默认方法
格式:
public default void 方法名(){
方法体
}
特点: 子类可以重写,也可以不重写
② 静态方法(了解)
概述: JDK8之后接口可以有静态方法(不推荐使用)
格式:
public static void 方法名(){
方法体
}
特点: 可以通过"接口名.方法()"来调用.
③ 私有方法(了解)
概述: JDK9之后接口可以有私有法(不推荐使用)
格式:
private void 方法名(){ ...方法体... }
private static void 方法名(){ ...方法体... }
特点:
"非静态私有方法"就是抽取"默认方法"的公共部分.
"静态私有方法"就是抽取"静态方法"的公共部分.