JavaEE——回顾
程序员文章站
2022-06-30 19:34:15
目录继承extends子类继承父类子类调用父类静态static类加载抽象abstractfinal实现: 接口多态内部类成员内部类局部内部类匿名内部类静态内部类权限继承extends类 和 类, 单继承子类继承父类继承父类中所有可见的成员方法和成员变量父类的构造方法不能被子类继承, 只能被子类调用子类可以重写父类的方法方法名和参数列表一样返回值类型, 小于等于 父类的返回值类型权限, 大于等于 父类的权限子类调用父类super() -> 调用父类无参构造方法super.m...
继承extends
类 和 类, 单继承
子类继承父类
- 继承父类中所有可见的成员方法和成员变量
- 父类的构造方法不能被子类继承, 只能被子类调用
- 子类可以重写父类的方法
方法名和参数列表一样
返回值类型, 小于等于 父类的返回值类型
权限, 大于等于 父类的权限
子类调用父类
- super() -> 调用父类无参构造方法
- super.m1() -> 调用父类的成员方法
- super.a -> 调用父类的成员变量
- super 只能在子类中使用
- this: 当前对象, 自己
静态static
属于类, 通过 类名. 来调用
static{} -> 静态代码块, 类加载时执行
类加载
- 创建类的对象
- 调用类的静态成员
- 创建子类对象, 先加载父类, 再加载子类
- 调用子类的静态成员, 先加载父类, 再加载子类
- Class.forName(String className): 手动加载
java.lang.String java.util.ArrayList
抽象abstract
- 抽象方法: 只能存在于抽象类或者接口中
- 抽象类: 可以用来放抽象方法
不能实例化
有构造方法, 给自类调用的
final
- final class -> 不能被继承
- final void m1() -> 不能被重写
- final int a -> 不能被改变, 常量, 必须初始化
成员变量a, 必须在创建对象时初始化 - final static int B -> 必须初始化, 静态常量
类加载时, 必须初始化完成 - 常量: 固定几个选项时, 通常类型都是int
将选项起个名字-变量, final 变量
如果常量要在外部无关类中使用, 通常为了方便, 都会定义成static
实现: 接口
抽象方法 -> 必须被实现类重写/覆盖的
静态常量 -> 直接通过接口类型使用
默认方法 -> 有具体实现, 可以不被重写
静态方法 -> 直接通过接口类型使用
私有方法 -> 给默认方法提供的
- 使用接口, 必须有实现类, 并且创建实现类对象
多态
意义: 扩展方法的功能
编译时看左边, 运行时看右边
父类 a = new 子类();
接口 b = new 接口实现类();
a.m1(): 说明m1声明在父类中,子类重写了m1方法
编译时类型: 只在编译时有效
泛型
a 想要调用子类特有的方法, 需要强制转换
可能会出现 ClassCastException
解决方式, 提前使用 a instanceof 子类
内部类
成员内部类
成员内部类 -> 类中
public class Outer{
public class Inner{
}
}
Outer.Inner in = new Outer().new Inner()
局部内部类
局部内部类 -> 方法中
只在方法中可以使用, 一次性
public void m1() {
int a = 10;
class Inner {
// 使用a, a必须是final
}
}
匿名内部类
接口/抽象类 b = new 接口/抽象类() {
// 真正的类, 重写抽象方法
}
只能创建一次对象
静态内部类
静态内部类 -> 属于类的
public class Outer{
public static class Inner{
}
}
Outer.Inner in = new Outer.Inner()
权限
外部类: public/(default)
成员内部类: public/protected/(default)/private
局部内部类: 不能使用
方法: public/protected/(default)/private
成员变量: public/protected/(default)/private
局部变量: 不能使用
本文地址:https://blog.csdn.net/qq_40905010/article/details/107392297