多态——匿名内部类——lambda

1、多态

1.1多态的概念

1.父类引用指向子类对象
2.一对象多种状态

1.2前提

有继承或者实现

1.3代码形式

父类类型 变量名=new 子类类名();

1.4成员访问的特点(重点掌握!!)

成员变量 :编译,运行都看左边(父类)
成员方法:编译看左边,运行看右边;

优点缺点

优点:提高代码的扩展性,一个父类参数可以接受多个子类
缺点:不能使用子类特有的方法,想使用子类方法需要强制转换,向下转型;可以用instanof 先判断,防止不是父类报错

2、内部类

2.1类型 :

成员内部类 局部内部类

2.2注意

内部类可以访问,外部类的成员变量,包括private都可以访问
想变量名相同可以用 外部类名.this.变量名;
A.this.a;
class Outside{ private int a = 100; class Inside{ private int a = 200; public void show(){ int a = 300; System.out.println(__**Outside.this.a**_______);//100 System.out.println(____**Inner.this.a**_______);//200 Ssytem.out.println(_____a______);//300 } } }

3、匿名内部类

new 父类或接口(){
重写父类或接口的方法;
};
前提是有继承或者实现
等于直接用父类或者接口实现了一个类,但是没有名字,直接重写了父类或者接口的方法,

Snipaste_2021-01-28_21-28-07.png

4、lambda表达式

4.1概述
lambda是java在jdk8开始新增的一种语法,这种语法允许我们在调用带有接口类型的形参的方法时,使用lambda作为方法的实参使用;(lambda是需要根据调用的场景自动进行推导的)


4.2使用限制
必须方法的形参是有接口类型,并且接口中有且只有一个抽象方法


4.3语法

(参数列表)->{方法体;return 返回值;}
lambda必须作为方法的实参使用;


4.4省略规则

Snipaste_2021-01-29_08-55-43.png

4.5和内部类区别
Snipaste_2021-01-29_08-57-40.png

4.6 lambda表达式就是 调用方法中是一个接口类型,由于接口没有实现方法,所以在调用的时候实现了这个类,lambda 就可以看作这个类的实例化,也就是方法中的实参,debug可以看到先的构造过程,调用方法执行接口的方法时,再真正使用lambda中的方法体,
(参数列表)->{方法体,有返回值时,加return;}
调用方法(lambda);
被调用的方法体中的形参是接口类型
接口中一个抽象方法

你可能感兴趣的:(多态——匿名内部类——lambda)