0
点赞
收藏
分享

微信扫一扫

2022_4_9

木樨点点 2022-04-15 阅读 61
java

一、多态
1.多态的概念
同一个对象,在不同时刻表现出来的不同形态

MyInterfaceA a = new MyInterfaceAImpl();
Object o = new MyInterfaceAImpl();

2.多态产生的前提
a.必须存在继承或实现关系
b.必须要有方法的重写
c.父类或接口的引用指向子类或实现类对象

3.向上造型: 父类型引用 指向 子类型对象
ps: 接口类型 a = new 实现类对象();
父类型 a = new 子类型对象();

编译时类型(编译器) = 运行时类型(JVM)
编译时看左边: 决定对象能调用什么成员变量和方法
运行时看右边: 决定对象最终调用的是那个方法

4.向下转型:
格式: 子类型 a = (子类型)父类型引用;
ps: Dog d = (Dog)animal;

有可能出现的问题: 不知道当前引用到底是什么类型
出现ClassCastException:类型转换异常
解决方式: 转换之前使用instanceof关键词做判断

instanceof关键词:
	对象 instanceof 子类型

5.多态的好处: 实现类型统一,规范代码,代码复用性(通用性)

二、内部类
1.内部类的概念
在一个类的内部,定义了另一个类。

2.内部类的创建方式:
外部类.内部类 oi = new 外部类().new 内部类();

3.特点
a.内部类任然是一个独立的类,在编译之后内部类会被编译成独立的.class文件。
但是前面会以外部类的类名+$符号。
b.外部类的访问权限: public 和 默认
成员内部类的访问权限: public、protected、default、private

4.内部类的分类
内部类
| - 成员内部类
| - 实例内部类
| - 静态内部类
| - 局部内部类
| - 匿名内部类

1)实例内部类
定义在类的内部,没有static关键词修饰的类.
创建方式:
外部类.内部类 oi = new 外部类().new 内部类();
使用外部类成员(同名变量情况下):
a.局部变量: 变量名
b.内部类成员变量: this.变量名
c.外部类成员变量: 外部类名.this.变量名

2)静态内部类
定义在类的内部,有static关键词修饰的类.
创建方式:
外部类.内部类 对象名 = new 外部类.内部类()
使用内部类的成员变量:
访问静态成员: 外部类名.内部类名.变量名

3)局部内部类
定义在方法内部的类,称为局部内部类.

特点:
  a.局部内部类和局部变量一样,都是不能使用访问修饰符(public protected private) 和 static修饰词修饰.
  b.作用范围: 只在当前方法内有效
  c.局部内部类就是一次性使用的类

4)匿名内部类
定义在方法内部,并且没有名字的类,称为匿名内部类.

特点:
  a.使用前提: 一次性使用的类

格式:
	new 接口(){ }

作用: 实现接口或者继承抽象类

5)匿名内部类作为方法参数使用

举报

相关推荐

2022/4/9-2022/4/10

2022年4月9日Java笔记

2022/4/4

CCF 2022-9

2022/4/4偷懒

2022/4/13

每日总结(2022/1/9)

0 条评论