11.22学习知识点

11.22知识点
1、多态
多态是基于继承或者实现的
概念:对象或者实现类的多种形态,同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果
举例:动物为父类或者接口,狗为子类或者实现类;狗既是一只狗也是一个动物
代码提现:Animal animal = new Dog(); // 父类引用指向子类对象
1.1 向上转型(向上转型一定是安全的)
Animal animal = new Dog();
1.2 向下转型
// 解决向上转型,父类引用无法使用子类特有方法的问题
语法:子类名称 对象名 = (子类名) 父类引用
Dog dog = (Dog)animal; // 类似于强制类型转换
// 判断是否能向下转型(父类引用本来是什么子类)
语法:父类引用(Animal)或者接口引用 instanceof 子类或者实现类名称
** 类和方法中final关键字和abstract不能一起使用
2、final关键字
2.1 final关键字修饰类
public final class 类名 // 被final修饰的类不能有子类
2.2、final关键字修饰方法
public final 返回值类型 方法名称(参数列表)
// 被final关键字修饰的方法不能被覆盖重写
2.3 final关键字修饰局部变量
final 类型 变量名 // 被final修饰的变量不可被重新赋值(不可变)
// 基本类型 被修饰的变量数值不可变
// 引用类型 被修饰的变量地址值不可变,内容可变
2.4 final关键字修饰成员变量
private final 类型 变量名
// 成员变量有默认值,用final修饰后必须手动赋值,不会再给默认值
// final修饰的成员变量,要么直接赋值,要么通过构造方法赋值,二者选其一
// 必须保证类中所有重载的构造方法,都最终会对final的成员变量进行赋值
3、四种权限修饰符
public > protected > (default) > private
注意:不写则为default
例:[default] int a = 20;
3.1 同类 都可访问
3.2 同包 private修饰的不可访问
3.3 不同包子类 default和private修饰的不可访问
3.4 不同包非子类 protected和default和private修饰的不可访问
4、内部类
4.1 成员内部类
语法:
权限修饰符 class 类名称{
权限修饰符 class 内部类名称{
}
}
注意:
1、内部使用外部,随意访问;外部用内部,需要借助于内部类对象
2、外部类变量与内部类变量重名
内部类访问外部类成员变量:外部类名称.this.外部类成员变量名
使用方式:
1、间接方式:外部类方法中使用内部类;main只是调用外部类方法
2、直接方式:外部类名称.内部类名称 对象名 = new 外部类名称().new 内部类名称();
4.2 局部内部类
定义在方法内部的类叫局部内部类
语法:
权限修饰符 class 类名称{
权限修饰符 返回值类型 方法名称(参数列表){
class 内部类名称{
}
}
}
注意:局部内部类使用所在方法的局部变量,该局部变量必须是final修饰或者不可变的
** 权限修饰符在类中的使用
外部类 public 或者 (default)
成员内部类 public protected (default)private
局部内部类 什么权限修饰符都不能写
4.3 匿名内部类
使用场景:如果接口的实现类(或者是父类的子类)只需要使用唯一的一次,则可以省掉该类定义,使用匿名内部类
定义方式:
接口名称 对象名 = new 接口名称() {
// 覆盖重写所有的抽象方法
};

Guess you like

Origin blog.csdn.net/weixin_44079370/article/details/121515420