首页 > 其他分享 >内部类

内部类

时间:2024-07-13 23:30:04浏览次数:15  
标签:内部 Weapon public static new class

内部类

  • 一个类定义在另外一个类里面或者一个方法里面,这样的类叫做内部类

成员内部类

package test.InnerClass;

class CSer {
    String weapon;
    private int hp;
    static int money = 800;

    public CSer() {
        // 外部类想要访问内部类的成员,必须先创建一个成员内部类的对象,再通过这个对象来访问
        new Weapon().print();
    }

    class Weapon {
        int damage = 80;

        public void print() {
            // 内部类可以随心所欲地访问外部类的成员
            System.out.println(hp);
            System.out.println(money);
        }
    }
}

public class Test {
    public static void main(String[] args) {
        // 在静态方法中访问成员内部类的时候,就必须先得创建一个外部类的对象,因为内部类是依附于外部类的
        CSer cSer = new CSer();
        CSer.Weapon weapon = cSer.new Weapon();
        weapon.print();
    }
}

局部内部类

class Weapon {
    public Weapon print() {
        // 局部内部类是定义在一个方法或者一个作用域里面的类,所以局部内部类的生命周期仅限于作用域内。
        class AWP extends Weapon {
            private int damage = 80;
        }
        return new AWP();
    }
}
  • 局部内部类就好像一个局部变量一样,它是不能被权限修饰符修饰的,比如说 public、protected、private 和 static 等。

匿名内部类

public class ThreadDemo {
    public static void main(String[] args) {
        Thread t = new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println(Thread.currentThread().getName());
            }
        });
        t.start();
    }
}
  • 匿名内部类的作用主要是用来继承其他类或者实现接口,并不需要增加额外的方法,方便对继承的方法进行实现或者重写。
  • 匿名内部类是唯一一种没有构造方法的类。

静态内部类

class CSer {
    String weapon;
    private int hp;
    static int money = 800;

    public CSer() {
        new Weapon().print();
    }

    // 静态内部类和成员内部类类似,只是多了一个static关键字。
    static class Weapon {
        int damage = 80;

        public void print() {
            // 由于static关键字的存在,静态内部类是不允许访问外部类中非static的变量和方法的
            System.out.println(money);
        }
    }
}

内部类特性

  • 1、内部类可以使用多个实例,每个实例都有自己的状态信息,并且与其他外围对象的信息相互独立。
  • 2、在单个外部类中,可以让多个内部类以不同的方式实现同一个接口,或者继承同一个类。
  • 3、创建内部类对象的时刻并不依赖于外部类对象的创建。
  • 4、内部类并没有令人迷惑的“is-a”关系,他就是一个独立的实体。
  • 5、内部类提供了更好的封装,除了该外围类,其他类都不能访问。

标签:内部,Weapon,public,static,new,class
From: https://www.cnblogs.com/sprinining/p/18300992

相关文章

  • Java基础,final关键字,权限修饰符,内部类,抽象类和接口作为方法的参数和返回值,System类,Obj
    一.final关键字1.final:不可以改变,可以用来修饰类,方法和变量类:被修饰的类,不能被继承方法:被修饰的方法,不能被重写变量:被修饰的变量,不能被重新赋值2.格式:    修饰类:finalclass类名{}    修饰方法:publicfinal返回值类型方法名(){}    修饰变量:fin......
  • Java中的静态内部类详解
    Java中的静态内部类详解大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在Java中,内部类是一种将类定义在另一个类内部的结构。而静态内部类(StaticNestedClass)则是使用static修饰的内部类。静态内部类有其独特的特性和用途,理解静态内部类可以帮助我们编......
  • DW03D是一款用于锂离子/聚合物电池保护的高集成度解决方案。DW03D包含内部功率MOSFET
    一般概述    DW03D产品是单节锂离子/锂聚合物可充电电池组保护的高集成度解决方案。DW03D包括了先进的功率MOSFET,高精度的电压检测电路和延时电路。    DW03D具有非常小的TSS08-8的封装,这使得该器件非常适合应用于空间限制得非常小的可充电电池组应用。 ......
  • Franka 内部关节阻抗控制器和内部笛卡尔阻抗控制器的区别
    Franka机器人内部的关节阻抗控制器和笛卡尔阻抗控制器之间的本质区别如下:1.控制空间关节空间vs.笛卡尔空间:关节阻抗控制器工作在关节空间,即以关节角度、关节速度和关节扭矩为控制变量。笛卡尔阻抗控制器工作在笛卡尔空间,即以末端执行器的位置、速度和力作为控制变量。......
  • 游戏工作室内部端游梦幻西游全自动挖图
    本文探讨了一种自动化技术在特定游戏环境中的应用,旨在分析其操作流程、成本效益和潜在的收益模式。1.游戏环境分析在某些在线多人角色扮演游戏(MMORPG)中,玩家可以通过探索游戏地图中的藏宝图来获取虚拟货币或其他游戏内物品。这一过程通常需要手动操作,可能涉及寻找坐标和挖......
  • Java 如何在volatile内部调用接口
    在Java中,volatile关键字通常用于确保变量的可见性和有序性,而不是用来修饰接口或方法调用的。volatile修饰的变量会被立即同步到主存,并且在每次访问时都会从主存中重新读取,而不是从缓存中读取。这意味着对volatile变量的修改对所有线程都是可见的。然而,我们的需求似乎是在一个被......
  • 将WPF内部绑定的控件和数据拉取出来
    一般最简单的ItemsControl的写法是<ItemsControlItemsSource="{BindingStudents}"><ItemsControl.ItemTemplate><DataTemplate><TextBlockText="{BindingName}"/>......
  • python 调用 bat,传入参数,bat中实现如果有参数传入则读取参数,没有的话就使用内部的变量
    以下是一个Python调用BAT脚本并向其传递参数的示例,同时BAT脚本中会判断是否有参数传入并进行相应处理:Python代码:pythonimportsubprocess#定义要传递的参数parameter="example_parameter"#调用BAT脚本并传递参数subprocess.run(["your_bat_script.b......
  • scrapyd_client deploy 内部实现简单说明
    scrapyd_clientdeploy提供了对于开发的spider的打包,同时push到scrapydserver中,因为python的特殊性,我们开发的spider可能有依赖,scrapyd_client会结合实际命令打包应用为是否包含依赖的egg包egg包处理对于egg包处理,scrapyd_clientdeploy会先检查spider项目中是否包......
  • pwn的linux基础(计算机内部数据结构存储形式)
    linux基础保护层级:分为四个ring0-ring3一般来说就两个,0和30为内核3为用户 权限:用户分为多个组文件和目录等等的权限一般都是三个,即可读可写可执行。读:R,写:W,执行:X赋予一个可执行文件执行权限就是chmod+xfilename虚拟内存和物理内存:物理内存很直白,就是内存......