顺畅的使用内部类和内部类属性

前言

需求来源是我需要封装一个对象进行传参,但是我又不想通过创建多个类的方式进行嵌套,于是便想到内部类的方式。一下是我想实现的问题,当然实际上ShippingMessage类也是Order类的一个属性。

@Data
public class ShippingMessage extends Shipping {
    private String time;
    private String address;
    private Contact contact;

    @Data
    public class Contact{
        private String name;
        private String phone;
    }
}

最终形成如下图所示的结构参数:
在这里插入图片描述

举例说明

# 生成含有内部类的Animal
public class Animal {
    public Cat cat;

    public class Cat {
        private String name;
        private String color;

        public void setName(String name) {
            this.name = name;
        }

        public void setColor(String color) {
            this.color = color;
        }

        public String getName() {
            return name;
        }

        public String getColor() {
            return color;
        }
    }
}
# 调用上面含有内部类的类进行属性类操作
Animal animal = new Animal(); // 创建外部类的实例
animal.cat = animal.new Cat(); // 使用外部类实例创建内部类的实例,并赋值给 Cat 属性

animal.cat.setName("Tom"); // 给 Cat 的属性赋值
animal.cat.setColor("Gray");

System.out.println("Cat name: " + animal.cat.getName());
System.out.println("Cat color: " + animal.cat.getColor());

注意

在用内部类的时候需要考虑类的隔离级别:
在Java中,有四种访问修饰符(隔离级别)用于控制类、方法、变量以及内部类的访问权限:private、public、默认(无修饰符)和protected。

  1. private:最严格的访问级别。private修饰的成员只能在当前类中直接访问,其他类无法直接访问。这种访问级别用于封装类的内部实现细节,防止外部代码直接访问和修改。

  2. public:最宽松的访问级别。public修饰的成员可以被任何类访问,包括外部类和不同包中的类。这种访问级别用于公开类的接口和功能。

  3. 默认(无修饰符):如果没有使用任何修饰符,即默认访问级别。默认访问级别在同一包中可见,但对于不同包中的类则不可见。这种访问级别用于控制包内部的访问。

  4. protected:介于private和默认访问级别之间。protected修饰的成员在同一包中可见,不同包中的子类也可以访问。这种访问级别用于实现类继承和子类对父类的访问。

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值