java随笔

37 阅读3分钟

多态

1.概述:

  • 定义:指同一个方法或者同一个类,在不同的情况下具有不同的表现形式

  • 注意:满足多态的前提是有继承或者实现关系

2.格式:父new子

父类类型 变量名 = new 子类/实现类构造器; 变量名.方法名();

// 多态前提,有继承关系,子类对象是可以赋值给父类类型的变量.

使用场景

  • 父new子
  • 父new接口

4.特点

  • 调用成员变量时:编译看左边,运行看左边
  • 调用成员方法时:编译看左边,运行看右边

5.内存图

image-20230813145339502

6.多态优点:

  • 在多态形式下,右边对象可以实现解耦合,便于扩展和维护

定义方法的时候,使用父类型作为参数,可以接收所有子类对象,体现多态的扩展性与便利。 7.多态缺点:无法直接访问子类特有的成员,也就是多态的写法无法访问子类独有功能,也就是说,父类不能调用子类的特有方法

8.引用类型转换:

  • 含义:将一个对象的引用从一个类型转换为另一个类型

  • 向上转型:将一个子类对象的引用转换为其超类或接口类型的引用

  • 例如

    • 父类类型 变量名 = new 子类类型(); Animal a = new Cat();
  • 向下转型:将一个超类或接口类型的引用转换为一个子类对象的引用

  • 例如

    • 子类类型 变量名 = (子类类型) 父类变量名; Aniaml a = new Cat(); Cat c =(Cat) a;

9.instanceof关键字

  • 含义:用于测试一个对象是否是一个类的实例,或者是该类的子类或接口的实例。简单来说就是类型校验

变量名 instanceof 数据类型 /* 如果变量属于该数据类型或者其子类类型,返回true。 如果变量不属于该数据类型或者其子类类型,返回false。*/

接口

1.概述

  • 含义:接口是一种规范或契约,它只定义了方法签名、常量以及嵌套类型的声明,没有方法实现或属性

  • 格式:

//接口的定义格式: interface 接口名称{ // 抽象方法 } // 接口的声明:interface // 接口名称:首字母大写,满足“驼峰模式”

  • 特点:

​ 抽象方法:会自动加上public abstract修饰 ​ 常量:会自动加上 public static final修饰

2.基本实现

  • 实现方式:使用 implements关键字

  • 格式:

/**接口的实现: 在Java中接口是被实现的,实现接口的类称为实现类。 实现类的格式:*/ class 类名 implements 接口1,接口2,接口3...{ }

  • 要求:接口体现的是一种规范,接口对实现类是一种强制性的约束。需要强制重写或定义为抽象类

3.接口与接口的多继承

  • 含义:一个接口可以继承另一个或多个接口,这被称为接口的多继承

  • 格式:

public interface SportMan extends Law , Abc { void run(); }

  • 补充:接口和类之间的关系
    • 类和类是继承关系,只能单继承,不能多继承
    • 类与接口是实现关系,可以单实现,还可以多实现
    • 接口与接口是继承关系,可以单继承,还可以多继承