面向对象深入

  1. 1.            抽象类

a)     声明

i.           抽象方法和抽象类必须用abstract来修饰

ii.           没有方法体,不需要实现

b)    定义

i.           抽象方法的类只能定义抽象类

ii.           抽象类中不一定全都是抽象方法

c)     使用

i.           抽象类中可以包含属性、方法、抽象方法

ii.           不能实例化

iii.           只能用来继承

iv.           子类必须覆盖所有抽象方法,否则子类还是抽象类

Java学习 · 初识               面向对象深入二-LMLPHP

Java学习 · 初识               面向对象深入二-LMLPHP

Java学习 · 初识               面向对象深入二-LMLPHP

  1. 2.            接口 interface

a)     定义

i.           接口就是比抽象类还抽象的抽象类

ii.           接口就是规范,定义的是一组规则

iii.           实现了规范和实现的分离

b)    接口的相关规则

i.           所有方法都是抽象的

ii.           变量默认为public static final

c)     使用

i.           可以定义一个接口,用extends继承了一个接口

ii.           可以定义一个类,用implements实现一个接口

iii.           可以定义一个抽象类,用implements实现接口的部分方法

d)    定义格式

i.           [访问修饰符] interface 接口名 extends 父接口

  1. 常量定义:public static final
  2. 方法定义: public abstract

e)     如何实现接口

i.          Java学习 · 初识               面向对象深入二-LMLPHP

  1. 3.            内部类

a)     定义

i.           将一个类定义置入另一个类定义当中

b)    特点

i.           可以访问外部类的成员(包括private成员),反之不行

ii.           可声明为,public default protected private

iii.           编译后生成两个类,OuterClass.class OuterClass$InnerClass.class

c)     分类

i.           匿名内部类 Anonymous

  1. 可以实现一个接口,或继承一个父类
  2. 只能实现一接口
  3. 适合创建一次性使用的类,不能重复使用,在GUI编程中常见
  4. Java学习 · 初识               面向对象深入二-LMLPHP
  5. 4.            Lambda表达式

a)     作用

i.           传递一个反复使用的代码块(在使用函数式接口时使用

b)    语法

i.           (参数,参数)->{代码块}

c)     函数式接口

i.           定义:只有一个抽象方法的接口

d)    三种引用

i.           方法引用

  1. Object::instanceMethod
  2. Class::staticMethod
  3. Class::instanceMethod

ii.           构造器引用

  1. 类型::new

e)     变量作用域

i.           Lambad表达式总是捕获最终对象

05-22 03:16