Ⅰ java里面不允许声明类为静态的吗
不可以声明类为静态类的。
解释:静态类是没有实际意义的,而且运行初始化还要占用大量内存,而且假如有静态类,不能被重写,不能被创建,没啥实际意义。
Ⅱ java 静态类是什么意思 有什么特点
java没有直接的静态类这种东西,一个类可以为static的情况只是他作为另一个类的成员,static表明他可以不用建立实例被访问而已,这样的内部类完全没有内部类的特点
1 内部类可以访问所在外部类的成员变量和方法,而静态内部类却不能
2 内部类可以使用Outter.this作为外部类引用,但静态内部类不能使用
3 静态内部类就如同外部类的一个静态成员,他只能访问外部类的静态成员和静态方法
4 在外部类外必须使用Outter.Inner外部类名和内部类名都要使用,楼上所说的不需要建立对象, 指的是不需要建立外部类实例,
比如BigOuter.Nested n = New BigOuter.Nested();
Ⅲ java 有没有静态类
java有静态内部类
Java语言允许在类中再定义类,这种在其它类内部定义的类就叫内部类。内部类又分为:常规内部类、局部内部类、匿名内部类和静态嵌套类四种。
Ⅳ java 外部类可以定义成静态类吗,如果可以,它会起到什么作用呢
静态类只用于包含静态成员的类型,它既不能实例化,静态类的特性是防止继承,防止外部来NEW。它相当于一个sealed abstract类。
static class MyUtility
{
public const int data;
public static void Foo()
{
...
}
}
静态类的几个注意点
静态类不能有实例构造器。
静态类不能有任何实例成员。
静态类不能使用abstract或sealed修饰符。
静态类默认继承自System.Object根类,不能显式指定任何其他基类。
静态类不能指定任何接口实现。
静态类的成员不能有protected或protected internal访问保护修饰符。
Ⅳ Java 枚举类型必须定义在静态类中
应该是enum类型本质是静态类,普通内部类里当然不能定义静态类。静态类是编译期确定的,普通内部类是运行时确定的,所以静态内部类的普通成员父类要到运行期才能确定,就不可能编译确定该普通内部类的静态内部类,就是说,该静态内部类的上层父类当中不能有一层是普通内部类,编译器编译时中间就断链了。即在内部类中只能静态包含静态,不能普通包含静态。希望你能理解。
Ⅵ java中,定义了一个静态类,并且里面有一个构造方法,可不可被new出来
静态类,一般不用NEW出来,都是直接可以调用的,类似全局性质,除非程序给彻底终止该类才会失效。
Ⅶ java中为什么不能将一个类定义为静态的
普通类是不能声明为static的,想要使用类里的静态方法或变量,只需要将方法或变量声明为static即可,即使类不是static,也可以直接调用其中的方法或变量,所以静态类并没有什么意义。
Ⅷ Java 静态内部类的使用
Java语言允许在类中再定义类,这种在其它类内部定义的类就叫内部类。内部类又分为:常规内部类、局部内部类、匿名内部类和静态嵌套类四种。
1、静态内部类定义
静态内部类,定义在类中,任何方法外,用static定义;静态内部类只能访问外部类的静态成员。
生成(new)一个静态内部类不需要外部类成员:这是静态内部类和成员内部类的区别。静态内部类的对象可以直接生成:Outer.Inner in=new Outer.Inner();而不需要通过生成外部类对象来生成。这样实际上使静态内部类成为了一个顶级类。可以定义私有静态内部类。
2、java实现静态内部类注意事项
将某个内部类定义为静态类,跟将其他类定义为静态类的方法基本相同,引用规则也基本一致。不过其细节方面仍然有很大的不同。具体来说,主要有如下几个地方要引起注意。
1)一般情况下,如果一个内部类不是被定义成静态内部类,那么在定义成员变量或者成员方法的时候,是不能够被定义成静态成员变量与静态成员方法的。也就是说,在非静态内部类中不可以声明静态成员
2)一般非静态外部类可以随意访问其外部类的成员变量以及方法(包括声明为private的方法),但是如果一个内部类被声明为static,则其在访问包括自身的外部类会有诸多的限制。静态内部类不能访问其外部类的非静态成员变量和方法
3)在一个类中创建非静态成员内部类的时候,有一个强制性的规定,即内部类的实例一定要绑定在外部类的实例中。然后要在一个外部类中定义一个静态的内部类,不需要利用关键字new来创建内部类的实例。即在创建静态类内部对象时,不需要其外部类的对象
3、静态内部类示例
java在实现LinkedList时使用了如下内部类:
public class LinkedList<E>
extends AbstractSequentialList<E>
implements List<E>, Deque<E>, Cloneable, java.io.Serializable
{
........
private static class Entry<E> {
E element;
Entry<E> next;
Entry<E> previous;
Entry(E element, Entry<E> next, Entry<E> previous) {
this.element = element;
this.next = next;
this.previous = previous;
}
}
private Entry<E> addBefore(E e, Entry<E> entry) {
Entry<E> newEntry = new Entry<E>(e, entry, entry.previous);
newEntry.previous.next = newEntry;
newEntry.next.previous = newEntry;
size++;
modCount++;
return newEntry;
}
........
}
这里即静态内部类的典型用法
Ⅸ java中,定义一个静态类,里面有一个public void aMethod();实现某种功能,该方法算不算静态方法
public void aMethod(); 该方法没有使用static关键字,不属于静态方法,所以可以使用非静态字段。
Ⅹ java 如何写一个含有简单常数的静态类(菜鸟提问)
java写一个含有简单常数的静态类,可以使用接口,让一个类实现该接口,就可以直接通过接口.变量访问,如下代码:
测试类代码:
packagecom.qiu.lin.he;
{
publicstaticvoidmain(String[]args){
System.out.print(CeshiStatic.i);//直接使用该变量输出
}
}
接口类:
packagecom.qiu.lin.he;
publicinterfaceCeshiStatic{
publicstaticinti=0;//声明一个静态常数
}
运行结果如下: