首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java 的嵌套类(内部类和静态嵌套类)

class NestedClass {        ...    } } 复制代码  内部类与静态嵌套类    嵌套类有静态和非静态两种,其中静态的称为静态嵌套类(static nested classes...),非静态的称为内部类(Inner Classes)  一个嵌套类是包含它的外部类的一个成员,内部类能够访问外部类的其他成员,而静态嵌套类没有访问外部类的权限  作为外部类的成员,嵌套类能被声明为private...静态嵌套类   静态嵌套类与静态类里面的方法类似,一个静态嵌套类不能直接调用外部类里面的实例变量或者方法,它只能通过对象引用访问他们。  ...一个静态嵌套类与其他任何 top-level class 一样和他的外部类的其他成员相互作用。...由于静态嵌套类是通过外部类名来访问的:   OuterClass.StaticNestedClass   所以可以通过以下的语法来创建静态嵌套类的对象:   OuterClass.StaticNestedClass

88320
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Java中的嵌套类、内部类、静态内部类

    嵌套类可以分为两种,静态的和非静态的,即静态嵌套类和非静态嵌套类。非静态嵌套类又叫做内部类(Inner Class)。...内部类的实例对象都会绑定一个外围类的实例对象,并且InnerClass可以访问其所绑定的OuterClass的所有成员属性以及方法,包括私有成员属性以及方法。...静态嵌套类   有些人把静态嵌套类成为静态内部类,其实静态内部类这个称呼不严谨,因为内部类都是非静态的。...静态嵌套类与内部类有很大的不同,静态嵌套类说到底就是一个静态类,只不过是其位置位于某个类的内部罢了。   假设有如下静态嵌套类的定义:  class OuterClass {     ...    ...综上所述,虽然内部类和静态嵌套类都属于嵌套类,但是二者有本质区别:内部类的实例化对象需要绑定一个外围类的实例化对象,而静态嵌套类的实例化对象不能也无法绑定外围类的实例化对象。

    1.7K50

    java的内部类和静态内部类(嵌套类)

    背景 开发新项目,写Swager的mode的时候用到了嵌套Model,于是在代码中,出现了静态内部类。在codeReview的时候稍微和大家聊了一下。...非静态嵌套类(内部类)可以访问封闭类的其他成员,即使它们被声明为私有的也是如此。静态嵌套类无权访问封闭类的其他成员。...静态内部类 再一个普通类里面,给内部类加上static关键字的修饰; 与类方法和变量一样,静态嵌套类与其外部类相关联。...与静态类方法一样,静态嵌套类不能直接引用其封闭类中定义的实例变量或方法:它只能通过对象引用来使用它们。(就和两个普通不同的类之间的使用) 3....总结 嵌套类:内部类和静态内部类 内部类属于外部类的成员,必须依赖与外部对象来实现,静态内部类,不依赖,可以自己单独实现。 static 的修饰 变量,类,方法,代码块。 共性全局性。

    1.7K20

    scala 学习笔记(04) OOP(上)主从构造器私有属性伴生对象(单例静态类)apply方法嵌套类

    ),它有二层意思:一是定义了一个带参数的构造器,二是由于name前加了var,说明name:String不仅仅是构造器的参数,还是类Person的一个属性成员,不过这个版本与第一个版本还是有些差别的,如果用...,没有办法直接new, object中的所有方法都是静态方法,这一点类似c#中的static静态类,使用时直接按静态方法调用即可: var obj1 = Singleton.count...从object的使用上,还可以看出静态方法的调用上scala与java的不同,java中静态方法即可以用"类名.静态方法()",也可以用"对象实例.静态方法()"来调用,说实话,有点不太讲究,而Scala..."纠正"了这一错误,静态方法只能在object(即:静态类)上调用,非静态方法只能在对象实例上调用,这与c#的理念是一致的(见:java学习:OOP入门 第7点) apply方法不仅可以存在于object...内部还可以再定义类,即嵌套类,与java不同的是,scala的嵌套类是属于实例的,而不属于定义它的外部类。

    92680

    php学习之类与对象的类的静态属性

    静态变量定义 静态变量是当前类的所有对象共享的变量,任何一个该类的对象去访问它时,取得的都是相同的值,同样任何一个该类的对象去修改它时,也时同样被修改 定义静态变量 访问修饰符 static 静态属性名...; static 访问修饰符 静态属性名; 两种方式都可以 访问静态变量 在类的内部访问:有两种方式 self::静态属性名; 类名::$静态属性名; ?...在类的外部访问 如果是在类的外部访问今天属性,静态属性需要是public,否则也不能直接访问,访问的形式是   类名::$属性名 $thishe self 的区别 使用方式不同 self:: $this...-> self是类的范畴指向类,$this是对象实例,指向对象实例 静态变量的使用注意事项 如果在类的内部去使用静态变量,有两种形式,self::$静态变量,   类名::$静态变量, 静态属性可以是public...、protected、private 在类的外部访问静态属性时 只能是类名::$静态属性名,要求是public 静态变量可以在定义时,直接初始化,普通的成员属性也可以 需求: 玩游戏时,当有人加入游戏时加一

    64300

    trick(十七)、静态方法、类方法、属性方法

    1、**的作用首先是一个简单的例子,定义一个带有3个参数的函数def fun(a, b, c): print a, b, c这个函数可以使用多种方法进行调用fun(1,2,3)输出:1 2 3 fun...:1 5 7我们可以看到,在这里**的作用是将传入的字典进行unpack,然后将字典中的值作为关键词参数传入函数中。...所以,在这里fun(1, **d)就等价于fun(1, b=5, c=7)更多的例子d={'c':3}fun(1,2,**d) d={'a':7,'b':8,'c':9}fun(**d)#错误的例子...':2, 'c':3, 'd':4}fun(**d)上面的代码会报错:TypeError: fun() got an unexpected keyword argument 'd'2、**kwargs的作用重新定义我们的...但是却有一个可以接收任意数量关键词参数的kwargs。使用**kwargs定义参数时,kwargs将会接收一个positional argument后所有关键词参数的字典。

    1.8K20

    Python类属性、类方法和静态方法

    通过类创建出来的对象是实例对象,类本身也是对象,称为类对象。 一、类属性 对象都有属性,我们常说的对象属性是实例对象拥有的属性,又称为实例属性。...不管是通过实例对象还是通过类对象,获取到的类属性都是一样的。所以,当类的实例对象所记录的某项数据始终保持一致时,则可以将该属性定义成类属性。...否则,类方法就没有定义成功,无法通过类对象来使用该方法。 ? 三、静态方法 在Python中,静态方法是既不需要传递类对象也不需要传递实例对象的方法。...实例对象和类对象都可以访问静态方法。 当方法中既不需要使用实例对象(如实例对象,实例属性),也不需要使用类对象 (如类属性、类方法、创建实例等)时,可以将方法定义成静态方法。...补充: 1.静态方法取消了不需要的参数传递,有利于减少不必要的内存占用和性能消耗。 2.类中定义了同名的对象方法、类方法、静态方法时,调用方法会优先执行最后定义的方法。

    72930

    trick(十六)、静态方法、类方法、属性方法

    目录一、静态方法 1.1、定义1.2、静态方法的特性1.3 总结二、类方法2.1、定义2.2、访问实例变量2.3、访问类变量,即 全局属性/静态字段 三、属性方法 3.1、定义3.2、setter用法3.3...deleter 用法四、属性方法应用场景五、总结----一、静态方法 1.1、定义在类中的方法前面通过@staticmethod装饰器即可把其装饰的方法变为一个静态方法class Person(object...self参数1.2、静态方法的特性静态方法是不能访问实例变量和类变量的class Person(object): def __init__(self, name): self.name...,可以在实例化后直接调用,并且在方法里可以通过self.调用实例变量或类变量,但静态方法是不可以访问实例变量或类变量的,一个不能访问实例变量和类变量的方法,其实相当于跟类本身已经没什么关系了,它与类唯一的关联就是需要通过类名来调用这个方法..., 类方法只能访问类变量,不能访问实例变量属性方法将一个方法变为类的属性,调用时不需要加()。

    1.9K10

    Java嵌套类

    参考链接: Java嵌套接口 本文来自于Java深入解析——透析Java本质的36个话题  Java的嵌套类分为 静态成员类(静态嵌套类)、内部类(非静态嵌套类)、嵌套接口。...内部类还可以分为内部成员类、本地内部类、匿名内部类。  一、静态成员类  习惯上将它成为静态嵌套类。标记为在类中使用 static 声明的类。...静态成员类可以访问外围类的任何成员,包括声明为private的成员。但是非静态的外围成员,则需要经过恰当的对象引用才能访问。因为是静态成员类,所以可以不依赖于外围类而独立存在并访问。...在继承方面,静态成员类与外围类也没有什么区别,在访问权限允许的情况下,任何类都可以继承静态成员类,静态成员类也可以继承任何(允许继承的)类或者接口。...而静态成员又是不需要对象就可以直接访问的,由于这种依赖与矛盾关系,内部类不可以申明为静态成员(包括静态成员变量、静态方法、静态成员类或嵌套接口)或静态初始化块。

    66730

    Kotlin实战--消除静态工具类:顶层函数和属性

    结果就是,最终这些类将不包含任何的状态或者实例函数,而是仅仅作为一堆静态函数的容器。在 JDK 中, 最适合的例子应该就是 Collections了。...2.顶层函数 见名知意,原来在Java中,类处于顶层,类包含属性和方法,在Kotlin中,函数站在了类的位置,我们可以直接把函数放在代码文件的顶层,让它不从属于任何类。...(类名一般默认就是顶层文件名+"Kt"后缀,注意容器类名可以自定义) 顶层函数会反编译成一个static静态函数,如代码中的getKotlin函数 现在我们应该知道如何在java代码中如何调用了吧。...于是我们在Java文件中可以这样调用 MyKotlin.getKotlin(); 3.顶层属性 了解了顶层函数,下面再看看顶层属性。顶层属性也就是把属性直接放在文件顶层,不依附于类。...4.写在最后 顶层属性和方法可以让我们的代码更加简洁,而且不需要引入多于的类。顶层函数在Kotlin里面用法也很广泛,我们最常用的let()方法就是顶层方法。后面会单独讲到Kotlin常用的顶层方法。

    2.1K31

    java嵌套类

    class NestedClass {         ...     } }   术语:嵌套类分为两种:静态或非静态。嵌套类声明为static称为静态嵌套类。非静态嵌套类都称为内部类。   ...非静态嵌套类可以访问它的封装类的其他成员,即使这些成员声明是private。静态嵌套类不能访问封装类的其他成员。...更可读性,可维护性的代码—在顶级类里嵌套小类,让代码更靠近使用的地方。   静态嵌套类   和类方法,类变量一样,一个静态嵌套类是和它的外部类关联的。...就像静态类方法一样,一个静态嵌套类不能直接引用封装类的实例变量或者方法—它只能通过封装类的引用访问它们。   注意:一个静态嵌套类访问它的封装类(和其他类)的实例成员,就像访问其他顶级类一样。...事实上,一个静态嵌套类就像一个顶级类,只是行为上嵌套在另一个顶级类里而已,达到打包方便的目的。

    1.3K20

    TypeScript学习第五篇 - 静态属性、静态方法、多态、抽象类

    静态属性与静态方法。 在TypeScript里通过 static 关键字来修饰静态属性与静态方法。...静态属性与静态方法不需要实例化就可以访问,访问时直接通过类名来调用,静态方法不能访问当前类里的属性,只能访问当前类里的静态属性。...static age:number = 30; // 静态方法 static eat(){ console.log(`他在喝水`); // 静态方法不能访问当前类里的属性...// 只能访问类里的静态属性 console.log(Person.age); } }; Person.eat(); // 他在喝水 // 30 2....抽象类与抽象方法 在TypeScript里通过 abstract 关键字来定义抽象类和抽象方法,抽象方法只能放到抽象类里面,抽象类不能直接用来实例化,通常用来定义其它类的标准,在抽象的子类里面必须实现抽象类的抽象方法

    3.5K20

    {Python}关于类属性、类方法和静态方法的综合案例

    如果需要学习类属性、类方法和静态方法可以看我之前的文章。...文章传送门:类属性一类属性二类方法和静态方法一、案例需求1.设计一个Game类2.属性:定义一个类属性top_score记录游戏的历史最高分定义一个实例属性player_name记录当前游戏的玩家姓名3....方法:静态方法show_help显示游戏帮助信息类方法show_top_score显示历史最高分实例方法start_game开始当前玩家的游戏4.主程序步骤查看帮助信息查看历史最高分创建游戏对象,开始游戏分析...看方法,第一个显示游戏帮助信息,这个只需要在游戏中显示出提示的信息并不需要访问类属性和实例属性,这种方法定义为静态方法。...访问类属性以上案例把学习过的类属性、类方法、静态方法知识点揉合到一起使用了一下,仔细看并没有什么技术含量,只是简单的使用来熟悉使用方法。

    54820

    PHP 静态属性和静态方法

    1、基本使用 前面介绍的 PHP 类属性和方法都要在类实例化后才能调用(常量属性除外),除此之外,PHP 还提供了静态属性和静态方法,所谓「静态」指的是无需对类进行实例化,就可以直接调用这些属性和方法,...,这里我们定义了一个静态属性$WHEELS 和静态方法 getWheels,由于静态属性和方法可以直接通过类引用,所以又被称作类属性和类方法(相应的,非静态属性和非静态方法需要实例化后通过对象引用,因此被称作对象属性和对象方法...),静态属性和方法可以通过 类名::属性/方法 的方式调用: echo "WHEELS:" ....PHP_EOL; 如果是在类内部方法中,需要通过 self:: 引用当前类的静态属性和方法,就像常量一样,因为静态属性和方法无需实例化类即可使用,而没有实例化的情况下,$this 指针指向的是空对象,...调用另一个类的静态属性/方法 如果在一个类中调用其他类的静态属性和方法,需要通过 完整类名:: 进行引用: <?

    4.3K10

    python-静态方法staticmethod、类方法classmethod、属性方法property

    \实例方法类方法静态方法a = A()a.foo(x)a.class_foo(x)a.static_foo(x)A不可用A.class_foo(x)A.static_foo(x)类的普通方法class...结论:类方法只能调用类变量,不能调用实例变量----属性方法@property 把一个方法变为(伪装成)类属性。因为类属性的实质是一个类变量,用户可以调用变量就可以修改变量。...某些特定场景要限制用户行为,就用到静态方法。 @property广泛应用在类的定义中,可以让调用者写出简短的代码,同时保证对参数进行必要的检查,这样,程序运行时就减少了出错的可能性。...__init__抛出异常,禁止通过类来实例化,只能通过静态get_instance函数来获取实例;因为不能通过类来实例化,所以静态get_instance函数中可以通过父类object....__init__抛出异常,禁止通过类来实例化,只能通过静态get_instance函数来获取实例;因为不能通过类来实例化,所以静态get_instance函数中可以通过父类object.

    2.2K10

    python 类属性和实例属性、类方法, 静态方法, 实例方法、接口, 协议和抽象基类 (4.2)

    类属性和实例属性 类属性 通过类对象可以直接访问的属性 抽象概念的固有属性, 要考虑当前抽象概念的普适性 # 贴标签不是一个特别好的抽象, 原因他没有一个普适性 class Developer:..._类名__变量名来访问私有属性 print(Lottery...._Lottery__items) 实例属性 绑定在实例上的属性, 只能通过该实例进行访问 实例的自有属性 class Developer: programing_language = None..._类名__变量名来访问私有属性 类方法, 静态方法, 实例方法 类方法 仅供类调用的方法 通过classmethod装饰器来声明一个类方法 自定义类创建 class Developer: programing_language...__case 静态方法 类可以直接调用的方法 通过staticmethod装饰器装饰 对一类抽象行为的归类 class MyMath: @staticmethod def add(a,

    62410
    领券