21-11-24学习笔记

多态

  • 概述:同一个对象在不同时刻表现出来的不同形态

  • 把子类创建的对象,赋值给父类的引用

//Animal 为 dog 的父类
Animal a = new dog();
	a.eat();

调用父类的方法显示子类重写后方法的效果
这种现象称为多态
多态的实现方式是通过方法的重写实现的

  • 多态中成员访问的特点

成员变量:编译看左边,执行看右边
成员方法:编译看左边,执行看右边
为什么不一样:因为方法有重写而成员变量没有

  • 多态的前提和体现

1.有继承或者实现关系
2.有方法的重写
3.有父类引用指向子类对象

  • 多态的好处和弊端

好处:提高了程序的扩展性
具体体现:定义方法的时候,使用父类作为参数,将来在使用的时候,使用具体的子类型参与操作

弊端:不能使用子类的特有功能会丢失子类的特性

向上转型

将子类对象赋值给父类引用
向上转型是自动的

Animal a = new Cat();

向下转型

将父类对象赋值给子类引用
需要强制类型转换

Cat c = (Cat)a;

static

static关键字是静态的意思,可以修饰成员方法成员变量

static修饰的特点

  • 被类的所有对象共享
    这也是我们判断是否是否使用静态关键字的条件
  • 可以通过类型调用(推荐)
    当然也可以通过对象调用

abstract抽象

  • 在Java中,一个没有方法体的方法应该定义为抽象方法,而类中如果有抽象方法,该类必须定义为抽象类
  • 对不需要实现的方法使用冲向方法来表示
  • 抽象方法:在方法上添加abstract修饰符
public abstract class 类名{}
public abstract void 方法名();

抽象类中不一定有抽象方法
有抽象方法的类一定是抽象类

  • 抽象类的子类

    如果一个类继承了抽象类,那么子类要么是抽象类,要么重写抽象类中的所有抽象方法

抽象类的成员特点:

  • 成员变量

看可以使变量也可以是常量

  • 构造方法

    抽象类有构造方法但不能实例化,他的构造方法用于子类访问父类数据的初始化
    抽象类不能实例化(不允许创建对象)

  • 成员方法

    可以有抽象方法:限定子类必须完成某些动作
    也可以有非抽象方法:提高代码复用性

继承的类加载与对象创建

  • 类加载:

JVM 第一次 读取一个类的时候,会将 .class(字节码文件)读入到内存,这个过程 被称为 类加载
一个类 最多只会发生 一次类加载, 类加载的产物 是 类对象,用 Class 类型来表示

类加载的过程:(递归加载父类)
递归的加载 所有父类的信息

  1. 分配空间
  2. 将静态属性读取到内存
  3. 按照类中代码定义顺序
    • 执行静态代码块中的信息,完成初始化工作
    • 静态属性如果有赋值语句,则进行赋值运算
  4. 如果 有静态属性没有赋值,此时 完成对静态属性的赋值
  5. 将类中的静态方法,全部压入 内存(此时方法是不会执行的)

对象的创建过程:(递归的加载父类)
递归的创建父类对象

  1. 分配空间
  2. 读取类中定义的所有属性,如果属性有赋值语句则进行赋值
  3. 按照类中定义代码的顺序
    • 读取类中的代码块(此时属性有可能是没有赋值的)
    • 如果属性有赋值运算,给属性赋值
  4. 如果属性没有得到赋值,则使用默认值
  5. 初始化类中的所有成员方法(将方法添加到方法区,不会调用方法)
  6. 调用构造方法,完成对象创建

密封Sealed类 JDK17新特性

public  sealed  class  Animal  permits  Dog ,  Cat{}
  • 定义一个 密封类 Animal, 只允许 Dog, Cat 继承
  • 继承 sealed 类的 子类 必须是 final 或者 sealed
  • sealed 必须定义需要继承的 子类
  • permits 允许

匿名内部类

是局部内部类的一种特殊形式

前提:存在一个类或者接口,这里的类可以是具体的类也可以是抽象类

  • 格式:
new 类名或者接口名(){
重写方法;
};
  • 范例:
new Inter(){
public void show(){
}
};

本质:是一个继承了该类或者实现了该接口的子类匿名对象

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值