目录
内部类:定义在一个类里面的类。
case1:内部类(Mood)通常可以方便访问外部类(Person)的成员(所有成员,包括私有成员。) .
case2:外部类访问内部类通过实例化内部类的对象访问内部类。
1.静态内部类
有static修饰(通过类名访问)
例:
静态内部类创建对象的格式:
外部类名.内部类名 对象名=new 外部类类名.内部类类名();例:
2.成员内部类
无static修饰。(JDK16及以上内部类可以直接包含静态成员)
例:
如上例子中的Engine类为成员内部类。
成员内部类创建对象的格式:
外部类名.内部类名 对象名=new 外部类构造器.new 内部类构造器;例:
3.局部内部类
将内部类放在方法、代码块、构造器等中。(了解)
4.匿名内部类(重要,既可以是成员,也可以是局部)
场景:对于类对象的使用次数有限(例如:一次),无需定义类文件,使用匿名内部类。
Animal抽象类:
package com.hb.lamboa;
public abstract class Animal {
private String name;
private int age;
public abstract void eat();
}
Cat具体类:
package com.hb.lamboa;
public class Cat extends Animal{
@Override
public void eat() {
System.out.println("猫吃鱼!");
}
}
AnimalManager:
package com.hb.lamboa;
public class AnimalManager {
public void eat(Animal animal){
animal.eat();
}
}
主函数:
示例:
一个接口中只有一个方法可以使用注解(@FunctionalInterface),这种接口又叫函数式接口,该种接口可以在声明匿名内部类时,可以简化为lambda表达式。