Java内部类

一、内部类

1. 基本介绍

  • 将一个类的定义放在另一个类的内部
  • 把一些逻辑相关的类组织在一起,并控制内部类的可见性
  • 内部类了解外部类,并能与之通信
  • 用内部类写出的代码,更加优雅而清晰

2. 普通内部类

package com.day.dreamer.queue;

import lombok.AllArgsConstructor;
import lombok.Data;

@Data
public class Table {
    private String color;
    private String brand;

    private Fruit food;

    public void addFruit() {
        /*1. 内部类: 在外部类中,可以正常访问*/
        Fruit fruit = new Fruit("apple");
        food = fruit;
    }

    /*2. 外部类包含一个方法: 1. 返回值是内部类的引用*/
    public Fruit getFruit() {
        return food;
    }

    /*5. 在拥有内部类之前,必须先获取到外部类
    *   5.1 内部类是依赖于外部类产生的*/

    @AllArgsConstructor
    @Data
    class Fruit {
        private String name;

        public void sayName() {
            System.out.println("my name is:" + name);
        }

        /*3.  内部类可以访问外部类的所有的信息
         *   3.1 在创建内部类的时候,内部类会获取一个外部类的引用*/
        public void getAccess() {
            System.out.println(color);
            System.out.println(brand);
        }

        /* 4. 内部类中,返回外部类的对象*/
        public Table getTable() {
            return Table.this;
        }
    }

}
package com.day.dreamer.queue;

public class Demo07 {
    public static void main(String[] args) {
        Table table = new Table();
        table.setColor("Red");
        table.setBrand("Italy");
        table.addFruit();

        /*  在其他类中的调用方法
        1. 类型写法: Table.Fruit */
        Table.Fruit fruit = table.getFruit();
        System.out.println(fruit.getName());


        /* 根据外部类来访问内部类: .new 关键字来实现内部类的生成*/
        Table second = new Table();
        Table.Fruit peach = second.new Fruit("peach");
        System.out.println(peach);
    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值