关于内部类为静态类的时候,不能用.new 创建对象,代码如下

问题描述

publicclassCheckData{privateinti=900;classa{a(inti){System.out.println("mmmm"+i);}publicvoidaa(){System.out.println("第一个内部类"+i);nn();}publicCheckDatagetCheckData(){returnCheckData.this;}}publicstaticclassb{privateintj=911;b(){System.out.println("mm");}publicvoidbb(){System.out.println("第二个内部类"+j);}}publicageta(){returnnewa(1);}publicstaticbgetb(){returnnewb();}publicintnn(){System.out.println("ooooooooooo");return0;}publicstaticvoidmain(String[]args){CheckDatac=newCheckData();CheckData.amm=c.newa(1);//CheckData.bm=c.newb();为什么不可以这样创建对象mm.aa();CheckData.aaa=c.geta();aa.aa();aa.getCheckData().nn();//aa.nn();CheckData.getb().bb();c.getb().bb();}}

解决方案

解决方案二:
CheckData.bm=c.newb();为什么不可以这样创建对象改为CheckData.bm=newCheckData.b();
解决方案三:
引用1楼shixitong的回复:

CheckData.bm=c.newb();为什么不可以这样创建对象改为CheckData.bm=newCheckData.b();

我知道可以这样定义,我只是想问//CheckData.bm=c.newb();为什么不可以这样创建对象因为CheckData.amm=c.newa(1);可以这样定义,只是因为b为静态类就不可以这样定义了,这是为什么???
解决方案四:
引用2楼u014466305的回复:

Quote: 引用1楼shixitong的回复:
CheckData.bm=c.newb();为什么不可以这样创建对象改为CheckData.bm=newCheckData.b();

我知道可以这样定义,我只是想问//CheckData.bm=c.newb();为什么不可以这样创建对象因为CheckData.amm=c.newa(1);可以这样定义,只是因为b为静态类就不可以这样定义了,这是为什么???

我是这么理解的,静态是归属于类的,非static才是属于具体的对象,那么调用静态类的时候就不能用某个对象点了
解决方案五:
引用3楼shixitong的回复:

Quote: 引用2楼u014466305的回复:
Quote: 引用1楼shixitong的回复:
CheckData.bm=c.newb();为什么不可以这样创建对象改为CheckData.bm=newCheckData.b();

我知道可以这样定义,我只是想问//CheckData.bm=c.newb();为什么不可以这样创建对象因为CheckData.amm=c.newa(1);可以这样定义,只是因为b为静态类就不可以这样定义了,这是为什么???

我是这么理解的,静态是归属于类的,非static才是属于具体的对象,那么调用静态类的时候就不能用某个对象点了

静态是归属于类的,非Static才是具体的对象???没有明白什么意思
解决方案六:
引用4楼u014466305的回复:

Quote: 引用3楼shixitong的回复:
Quote: 引用2楼u014466305的回复:
Quote: 引用1楼shixitong的回复:
CheckData.bm=c.newb();为什么不可以这样创建对象改为CheckData.bm=newCheckData.b();

我知道可以这样定义,我只是想问//CheckData.bm=c.newb();为什么不可以这样创建对象因为CheckData.amm=c.newa(1);可以这样定义,只是因为b为静态类就不可以这样定义了,这是为什么???

我是这么理解的,静态是归属于类的,非static才是属于具体的对象,那么调用静态类的时候就不能用某个对象点了

静态是归属于类的,非Static才是具体的对象???没有明白什么意思

这好比如方法的调用的时候,静态方法用类直接调用,而非静态方法用类new出来的对象来调用。
解决方案七:
"静态"的意思就是“只有一个”,只要你看懂这句,后面都是废话一般直接调用类名.成员,动态则是对象名.成员比如Integer.ParseInt因为是静态所以用类名你静态类说明只有一个,是不需要对象的,因为我没为静态类创建过对象,所以不知道是不是静态类不能创建对象,一般是无意义的。比如韦小宝有N个老婆,那么就是老婆名.成员属性,如果你的是静态的,那么就是老婆.成员属性开玩笑的
解决方案八:
静态成员的意思是比如ClassTeam下有ClassMember,如果整个队伍一起移动的,也就是每个memer的city都一样的,那么就要用到静态那么每个member的city都指向同一个,可以用staticcitymember1.city="Nankin";之后,所有member的city就都是“Nankin”,其实是公用同一个地址这就是静态成员变量静态类也是同样理解的。在其他高手给出更好的解答之前,你可以看下我的解答。

时间: 2024-08-18 09:51:05

关于内部类为静态类的时候,不能用.new 创建对象,代码如下的相关文章

Java核心类库:内部类那点事儿

内部类:定义在类的内部的类 为什么需要内部类? ● 典型的情况是,内部类继承自某个类或实现某个接口,内部类的代码操作创建其的外围类的对象.所以你可以认为内部类提供了某种进入其外围类的窗口. ● java中的内部类和接口加在一起,可以实现多继承. ● 可以使某些编码根简洁. ● 隐藏你不想让别人知道的操作. 使用内部类最吸引人的原因是: 每个内部类都能独立地继承自一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对于内部类都没有影响.如果没有内部类提供的可以继 承多个具体的或抽象

java中没有方法体的方法是什么方法,

问题描述 java中没有方法体的方法是什么方法, java中没有方法体的方法是什么方法,省略方法体的方法是什么方法,如何区分一个没有方法体的方法到底是省略了方法体还是木有方法体? 解决方案 Java规范中没有或方法体为空的方法主要包括:抽象方法.接口方法.native修饰的本地方法. 如果非要语言化表述,应该可以这样描述: 抽象类中的方法--方法体为空 接口中的方法--没有方法体 本地方法--方法体需要被省略 解决方案二: 你说的应该是抽象方法,或者是写在接口中的函数定义.定义为abstract

java-Java静态内部类怎么调用外部类的泛型

问题描述 Java静态内部类怎么调用外部类的泛型 Java静态内部类怎么调用外部类的泛型,2个泛型可以名字一样,但是没有任何关系啊....... 解决方案 http://zhidao.baidu.com/link?url=GkDla2jig8PJLNVmNocRJCFgYmDCJx-xmnCdIpjk16jhFGwsWusJIkevnmN-UpOxyJopRo0kj3o-lWrsBKQVbCrdUPnqfUNyqep_Az8pARm 解决方案二: Java 内部类与静态类外部类 调用内部类Jav

Javascript面向对象编程_js面向对象

Javascript的重要性 使用率 1.在web应用中,涉及到前端界面编程基本上都要用到javascript语言: 2.Web2.0及Ajax推动了javascript语言. 3.随着大量的c/s应用转向b/s,富客户端技术的不断推广,javascript语言的应用范围还将不断加大: javascript的特点 简单 动态 基于对象(面向对象) Javascript面向对象概述 Javascript是一种面向(基于)对象的动态脚本语言,是一种基于对象(Object)和事件驱动(EventDri

MapReduce源码分析之LocatedFileStatusFetcher

        LocatedFileStatusFetcher是MapReduce中一个针对给定输入路径数组,使用配置的线程数目来获取数据块位置的实用类.它的主要作用就是利用多线程技术,每个线程对应一个任务,每个任务针对给定输入路径数组Path[],解析出文件状态列表队列BlockingQueue<List<FileStatus>>.其中,输入数据输入路径只不过是一个Path,而输出数据则是文件状态列表队列BlockingQueue<List<FileStatus&g

Scala中的类

阅读<Programming in Scala>,整理Scala类.继承.重载相关的一些知识点. 类 Scala使用class来定义类. class Counter { private var value = 0 // 必须初始化字段 def increment() { value += 1 } // 方法默认公有 def current() = value //空括号方法 } Scala中的类不能声明为public,一个Scala源文件中可以有多个类. 类的初始化和调用: val myCou

Iterator的remove方法可保证从源集合中安全地删除对象(转)

 如果对正在被迭代的集合进行结构上的改变(即对该集合使用add.remove或clear方法),那么迭代器就不再合法(并且在其后使用该迭代器将会有ConcurrentModificationException异常被抛出). 如果使用迭代器自己的remove方法,那么这个迭代器就仍然是合法的. package chapter1; import java.util.HashMap; import java.util.Iterator; import java.util.Map; /** * Crea

java学习笔记9--内部类总结

java内部类分为: 非静态内部类.静态内部类.局部内部类.匿名内部类 内部类的共性: (1)内部类仍然是一个独立的类,在编译之后内部类会被编译成独立的.class文件,但是前面冠以外部类的类名和$符号 . (2)内部类不能用普通的方式访问.内部类是外部类的一个成员,因此内部类可以自由地访问外部类的成员变量,无论是否是private的 . (3)内部类声明成静态的,就不能随便的访问外部类的成员变量了,此时内部类只能访问外部类的静态成员变量 . java 中的内部类和接口加在一起,可以的解决常被

转 解析JDK 7的动态类型语言支持

Java虚拟机的字节码指令集的数量自从Sun公司的第一款Java虚拟机问世至JDK 7来临之前的十余年时间里,一直没有发生任何变化[1].随着JDK 7的发布,字节码指令集终于迎来了第一位新成员--invokedynamic指令.这条新增加的指令是JDK 7实现"动态类型语言(Dynamically Typed Language)"支持而进行的改进之一,也是为JDK 8可以顺利实现Lambda表达式做技术准备.在这篇文章中,我们将去了解JDK 7这项新特性的出现前因后果和它的意义. 动