Java基础(5)——内部类

2020-03-29  本文已影响0人  让时间走12138

本节内容

1.内部类

2.匿名内部类

一、内部类

1.尽量一个文件里面定义一个类,需要在类的内部定义一个类,这种类就称为内部类
2.定义内部类的原因:希望封装对应的功能,这些功能可能不太希望直接暴露给外部
3.内部类是外部类的成员,内部类可以直接访问外部内的数据和方法,外部类无法调用内部类的相应数据。
4.内部类可以使用private,public,protected,final修饰符修饰,外部类只能使用public来修饰
5.普通内部类—属于对象,必须用对象来调用。静态内部类—属于类,必须使用类来调用,静态内部类无法调用非静态数据。
public class Car {
    private int Color;
    private int Wheels;
    public void start(){
       Wheels=4;
    Engine engine=  new  Engine();//内部使用内部类
    }
    public class Engine{
        public int oil;
      public Engine(){
          Wheels=5;
          start();
      }
     }
}
6.内部类的使用:如果是在内部的话,就像上述代码一样
Engine engine=  new  Engine();//内部使用内部类
但如果是在另外一个类调用这个内部类,就需要像以下一样
       Car bz=new Car();
       Car.Engine engine=bz.new Engine();//一般很少使用
7.调用静态内部类
 Car.Engine engine=new Car.Engine();

二、匿名内部类

1、如果需要多次使用一个对象,那么就直接创建一个对象(显示创建,显示对象)
  Worker xw=new Worker("小王");
      BuildHouse(xw);
     xw.setName("小李");
但如果只是使用一次这个对象,那不如使用匿名对象(没有名字的对象),如下:
BuildHouse(new Worker("张三"));
2.匿名类:没有名字的类,不显示创建这个类
BuildHouse(new MiniWorker("小工人"));
以上只是创建了一个匿名对象,以下才是创建一个匿名类
BuildHouse(new Worker("MiniWorker"){
        //匿名类的具体实现
        public int salary;
        public void  ShowMoney(){
            System.out.println(getName()+"工钱为100"+salary);
        }
        });
注:匿名内部类不能声明构造方法
3.使用匿名内部类必须满足:①这个类继承某个父类 ②这个类实现某个接口
上一篇 下一篇

猜你喜欢

热点阅读