美文网首页
30、静态内部类

30、静态内部类

作者: 爱学习的代代 | 来源:发表于2021-04-18 09:44 被阅读0次

静态内部类是在一个类中定义类。(public static class 内部类)
好处是:

  1. 减少类的可见性,减少Java source源文件的数量,让相关的类都集中在一个文件里
  2. 在内部类里访问外部类的属性(private属性)
  3. 外部的类可以访问内部的类,内部的类也可以外部类的属性。

代码示例:

package day16;

public class PhoneV2 extends MerchandiseWithConstructor{
    private double screenSize;
    private CPU cpu;
    private double memoryG;
    private double storageG;
    private String brand;
    protected String os;
    //  给手机品类增加个数限制
    private static int MAX_BUY_COUNT = 5;


    public PhoneV2(int id, String name, int count, double soldPrice, double purchasingRrice,
                   double screenSize, double memoryG, double storageG, String brand, String os) {
//      因为父类的属性不是公开的需要set方法来进行设置

        super(id,name,count,soldPrice,purchasingRrice);


        this.screenSize = screenSize;
        this.memoryG = memoryG;
        this.storageG = storageG;
        this.brand = brand;
        this.os = os;

    }


    public static class CPU {
        private double speed;
        private String producer;

        public CPU(double speed, String producer) {
            this.speed = speed;
            this.producer = producer;
        }


        public double getSpeed() {
//          内部类和这个类本身的访问情况是一样的,可以访问外部类的private属性
//            PhoneV2 ph = null;
//            ph.memoryG = 99;
            return speed;
        }

        public void setSpeed(double speed) {
            this.speed = speed;
        }

        public String getProducer() {
            return producer;
        }

        public void setProducer(String producer) {
            this.producer = producer;
        }
    }



//  单独实现子类对于购买数量的限制
//  在子类中声明同样的方法(返回值、方法名、入参)

    public double buy(int count) {
        if (count > MAX_BUY_COUNT) {
            System.out.println("超出商品的单词购买上限,购买失败");
            return -1;
        }

        return super.buy(count);
    }
    public void describe() {
        super.describe();
        System.out.println("手机配置信息如下:\n屏幕大小:" + this.screenSize + "英寸 \n" + " \n内存大小:" + this.memoryG + "G \n存储空间:" + storageG + "G \n品牌:" + this.brand + " \n操作系统:" + os);
    }

    public double getScreenSize() {
        return screenSize;
    }

    public void setScreenSize(double screenSize) {
        this.screenSize = screenSize;
    }

    public double getMemoryG() {
        return memoryG;
    }

    public void setMemoryG(double memoryG) {
        this.memoryG = memoryG;
    }

    public double getStorageG() {
        return storageG;
    }

    public void setStorageG(double storageG) {
        this.storageG = storageG;
    }

    public String getBrand() {
        return brand;
    }

    public void setBrand(String brand) {
        this.brand = brand;
    }

    public String getOs() {
        return os;
    }

    public void setOs(String os) {
        this.os = os;
    }


}

测试代码:

package day16;

public class TestPhoneV2 {
    public static void main(String[] args) {
        PhoneV2 v2 = new PhoneV2(200,"小米10",200,3999,3599,6,8.0,128.0,"小米","Android");

        v2.describe();


        PhoneV2.CPU cpu = new PhoneV2.CPU(5.5, "intel");

        System.out.println(cpu.getProducer());
        System.out.println(cpu.getSpeed());



    }
}

运行结果:


image.png

除了静态内部类,还有成员内部类,局部内部类,由于使用的比较少,这里不再进行赘述。等需要用到的时候再去了解。

相关文章

  • Java学习——内部类

    内部类 一,成员内部类(包括静态内部类和非静态内部类) 非静态内部类可以直接访问外部类的成员,反之则不行 非静态内...

  • 类的编译期与运行期

    非静态内部类 非静态内部类到底可以有静态属性吗? static成员变量,或者static final常量 非静态内...

  • Java 内部类

    内部类包括成员内部类、方法内部类、*静态内部类、匿名内部类*。 内部类的作用 由于内部类的实现和外部类没有关系,内...

  • Java基础内部类与Static,final

    成员内部类,局部内部类,匿名内部类 非 静态成员内部类 非 静态成员内部类反编译class 静态内部类 静态内部类...

  • Kotlin笔记

    静态内部类与内部类 kotlin 默认是静态内部类 静态内部类 内部类,持有外部的状态

  • Java自学-接口与继承 内部类

    Java 内部类 内部类分为四种: 非静态内部类静态内部类匿名类本地类 步骤 1 : 非静态内部类 非静态内部类 ...

  • Java内部类使用

    内部类 在Java中内部类主要分为成员内部类(非静态内部类、静态内部类)、匿名内部类、局部内部类。 非静态态内部类...

  • Java 内部类、静态内部类、方法内部类(未完待续)

    内部类 什么是内部类?内部类其实就是在一个类中创建的类。内部类有四种: 成员内部类 静态内部类 局部内部类 匿名内...

  • 静态内部类与非静态内部类

    静态内部类与非静态内部类的区别 1、非静态内部类不能声明静态成员变量和静态成员方法,而静态内部类可以声明静态和非静...

  • 关于静态内部类

    静态内部类与非静态内部类的区别 非静态内部类会隐式持有外部类的引用,可能引起内存泄漏。 静态内部类只能调用外部类的...

网友评论

      本文标题:30、静态内部类

      本文链接:https://www.haomeiwen.com/subject/rapmlltx.html