这周回归教材,重新学习面向对象的知识。
接口的定义:interface关键字
【修饰符】interface extends 父接口..(可多个)
接口只能继承接口,不能继承类
接口中方法为public abstract(抽象方法
常量为public static final(静态常量
内部类:
一个类放在另一个类的内部定义,定义在内部的类极为内部类,包含内部类的叫外部类
同时,内部类可以访问外部类的私有属性
如果外部类、内部类、内部类方法中的变量重名,用this 外部类名.this区分
非静态内部类不能有静态方法、成员变量、初始化块
静态内部类:用static修饰的内部类,属于外部类本身,又叫类内部类
只可以访问外部类的静态成员
外部类访问静态类部类:静态成员:类名.变量
非静态成员:new 类名().变量
静态成员是不能访问非静态成员的,并外部类静态成员(静态方法、静态初始化块)不能使用非静态内部类的成员
创建语法为;外名.内名 变量名=new 外名().new 内名(初始);
Out.In in=new Out().new In();
也可:Out.In in;
Out out =new Out();
in=out.new Im();
局部内部类:在方法中定义的内部类
不能用访问控制符和static修饰
匿名内部类:适用于创建只需要用一次的类
使用前台条件:必须继承一个父类或实现一个接口,但最多只能继承一个类或实现一个接口
不能是抽象类,不能定义构造器
常用方式:创建某个接口类型的对象
被匿名内部类访问过的局部变量相当于被final修饰了,不能再改变值了
Java8新增的Lambda表达式:
表达式入门::
支持将代码块作为方法参数,允许使用简洁的代码来创建只有一个抽象方法的接口(函数式接口)的实例
对比
匿名内部类:
pa.process(target,new command()){ public void process(int [] target) { ....实现代码块 }); } Lambda表达式: pa.process(target,(int [] target)->{ ...daimakuai }); }
Lamada作用代替匿名内部类的繁琐语法
三部分组成:形参列表 箭头(->) 代码块
只有一条语句可胜去花括号
--------------------------------------------------------------------
目前学习算步入正轨了,主要还是进度进度慢了点