Ⅰ java中为什么不能定义 public static class A
一般情况下是不可以用static修饰类的。如果一定要用static修饰类的话,通常static修饰的是匿名内部类。
在一个类中创建另外一个类,叫做成员内部类。这个成员内部类可以静态的(利用static关键字修饰),也可以是非静态的。由于静态的内部类在定义、使用的时候会有种种的限制。所以在实际工作中用到的并不多。
在开发过程中,内部类中使用的最多的还是非静态地成员内部类。不过在特定的情况下,静态内部类也能够发挥其独特的作用
Ⅱ java中static的用法
static可以修饰变量(属性)、方法、代码块和内部类
static属性:属于这个类所有,即由该类创建的所有对象共享同一个static属性。可以对象创建后通过对象名.属性名和类名.属性名两种方式来访问。也可以在没有创建任何对象之前通过类名.属性名的方式来访问。
static方法:也可以通过对象名.方法名和类名.方法名两种方式来访问
static代码块:当类被第一次使用时(可能是调用static属性和方法,或者创建其对象)执行静态代码块,且只被执行一次,主要作用是实现static属性的初始化。
static内部类:属于整个外部类,而不是属于外部类的每个对象。不能访问外部类的非静态成员(变量或者方法),.可以访问外部类的静态成员
Ⅲ 深入浅析Java中Static Class及静态内部类和非静态内部类的不同
37
38
/* 下面程序演示如何在java中创建静态内部类和非静态内部类 */
class OuterClass{
private static String msg = "GeeksForGeeks";
// 静态内部类
public static class NestedStaticClass{
// 静态内部类只能访问外部类的静态成员
public void printMessage() {
// 试着将msg改成非静态的,这将导致编译错误
System.out.println("Message from nested static class: " + msg);
}
}
// 非静态内部类
public class InnerClass{
// 不管是静态方法还是非静态方法都可以在非静态内部类中访问
public void display(){
System.out.println("Message from non-static nested class: "+ msg);
}
}
}
class Main
{
// 怎么创建静态内部类和非静态内部类的实例
public static void main(String args[]){
// 创建静态内部类的实例
OuterClass.NestedStaticClass printer = new OuterClass.NestedStaticClass();
// 创建静态内部类的非静态方法
printer.printMessage();
// 为了创建非静态内部类,我们需要外部类的实例
OuterClass outer = new OuterClass();
OuterClass.InnerClass inner = outer.new InnerClass();
// 调用非静态内部类的非静态方法
inner.display();
// 我们也可以结合以上步骤,一步创建的内部类实例
OuterClass.InnerClass innerObject = new OuterClass().new InnerClass();
// 同样我们现在可以调用内部类方法
innerObject.display();
}
}
Ⅳ Java中为什么不能定义 public static class A{}
一般情况下是不可以用static修饰类的。
如果一定要用static修饰类的话,通常static修饰的是匿名内部类。
例如:
public
class
Warp
{
public
static
class
Test<E>
{
public
E
get(E
e)
{
return
e;
}
}
public
static
void
main(String[]
args){
Test<String>
t
=
new
Warp.Test<String>();
String
a
=
t.get(new
String("abc"));
System.out.println("a="+a);
}
}
对于static关键字的应用:
1
用static修饰的成员变量叫类变量(或静态变量),
而没有用static修饰的成员变量叫对象变量(实例变量)
2
static修饰的数据不局限于所属的对象,所以它不需要创建对象就可以直接访问。
上面的程序我是参考链接总结的,你可以看看我写的程序,也可以看看参考资料,不过参考资料有点乱,呵呵。
希望对你有所帮助。
Ⅳ Java静态类(static class)是什么意思
java一半不用static 修饰类,除非这个类是内部类,
在定义内部类的时候,可以在其前面加上一个权限修饰符static。此时这个内部类就变为了静态内部类。不过由于种种的原因,如使用上的限制等等因素(具体的使用限制,笔者在下面的内容中会详细阐述),在实际工作中用的并不是很多。但是并不是说其没有价值。在某些特殊的情况下,少了这个静态内部类还真是不行。如在进行代码程序测试的时候,如果在每一个Java源文件中都设置一个主方法(主方法是某个应用程序的入口,必须具有),那么会出现很多额外的代码。而且最主要的时这段主程序的代码对于Java文件来说,只是一个形式,其本身并不需要这种主方法。但是少了这个主方法又是万万不行的。在这种情况下,就可以将主方法写入到静态内部类中,从而不用为每个Java源文件都设置一个类似的主方法。这对于代码测试是非常有用的。
Ⅵ Java问题,怎么能把static class提出来变成public class
额,你的理解有错误呢,一个可运行的代码中只能有有个public class 这个不是随便写的,你的静态方法,静态类,是你在开始运行的时候就会加载的东西,你用的时候就直接调用就行了,你把他弄成public的,肯定是不行的,
所以你要是想把这个作为一个public的,你就新建一个类,然后把你的那些代码弄过去就行了,下次需要的时候就直接调用就行
LeftistHeapNode c =new LeftistHeapNode();这样就可以了
Ⅶ static class java{ public static void main(String[] args){ } }
publicclassjava{
publicstaticvoidmain(String[]args){
//dosomething...
}
}
这是java的程序入口,通常称为主函数。
Ⅷ java中的private static class是什么意思有什么用谢谢
定义一个私有的静态内部类。。。。。
比如有一个功能模块 class A{}
这个模块里,因为功能需要,需要一个更小的,功能单一的小模块。
并且这个模块是不需要实体化的,例如这个模块的功能是字符串加密机。
是那种,拿来就能用的,直接取返回值,所以定义为静态的。
因为是加密机,尽量不让其他模块访问这个功能,就可以这么定义为私有的。
可以向下面这样:
putlic calss A{
private static class A_a{
static String tat(String s){……}
}
}
类A里面有一个私有的静态类A_a,
内部静态类A_a里面有一个静态的方法tat。
比如这是个字符串加密算法。想吧"abc"加密,就这么用:String t = A_a.tat("abc");
字符串t就是加密过的“abc”了。当然这东西只能在A类里面使用。外面是访问不到的。
Ⅸ java static 两个 Class 之间访问
用反射吧
public class Container
{
static final String A = "First";
static final String B = "Second";
}
public class A extends Common
{
}
public class B extends Common
{
}
public class Common
{
public String getMyString() throws Exception
{
Field f = Container.class.getDeclaredField(getClass().getSimpleName());
f.setAccessible(true);
return (String) f.get(Container.class);
}
public static final void main(String []args)
{
try
{
System.out.print(new A().getMyString());//输出First
System.out.print(new B().getMyString());//输出Second
}
catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Ⅹ 深入浅析Java中Static Class及静态内部类和非静态内部类的不同
。在java中我们可以有静态实例变量、静态方法、静态块。类也可以是静态的。
java允许我们在一个类里面定义静态类。比如内部类(nested class)。把nested class封闭起来的类叫外部类。在java中,我们不能用static修饰顶级类(top level class)。只有内部类可以为static。
静态内部类和非静态内部类之间到底有什么不同呢?下面是两者间主要的不同。
(1)内部静态类不需要有指向外部类的引用。但非静态内部类需要持有对外部类的引用。
(2)非静态内部类能够访问外部类的静态和非静态成员。静态类不能访问外部类的非静态成员。他只能访问外部类的静态成员。
(3)一个非静态内部类不能脱离外部类实体被创建,一个非静态内部类可以访问外部类的数据和方法,因为他就在外部类里面。