`
woshixushigang
  • 浏览: 578199 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

内部类和顶级类及static修饰的内部类

    博客分类:
  • j2ee
 
阅读更多

一个".java"源文件中是否可以包括多个类?

 

是的。

  

一个".java"源文件中是否可以包括多个public修饰的类?


可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致。我说的是不包括内部类,因为内部类可

 

以被public修饰,所以在不包括内部类的情况下一个类中只能有一个类被public修饰符修饰。

 

 

 这是内部类的情况:

public class Hello
{
	int a = 2;
       public static void main(String[] args)
		{
            new Hello().new newHello().count();
		}
       
       public  class newHello
       {
    	   public void count()
    	   {
    		   new Hello().a = 1;
    		   System.out.println("aaa");
    	   }
    	   
       } 
}       

 


 这也是内部类的情况:

 

public class Hello
{
	int a = 2;
       public static void main(String[] args)
		{
            new Hello().new newHello().count();
		}
       
       protected class newHello
       {
    	   public void count()
    	   {
    		   new Hello().a = 1;
    		   System.out.println("aaa");
    	   }
    	   
       } 
}       

 

 

这是静态内部类:

 

public class Hello
{
	static int a = 2;
       public static void main(String[] args)
		{
            new newHello().count();
//            new Hello().new newHello().count();
//            System.out.println(new Hello().new newHello().b);
            System.out.println(new newHello().b);
		}
       
       public static class newHello
       {
    	   int b = 3;
    	   public void count()
    	   {
    		   
    		   System.out.println(a);
    	   }
    	   
       } 
}       

  

 

 

这是外部类的情况:

 

 

public class Hello
{
	int a = 2;
       public static void main(String[] args)
		{
            new Hello().new newHello().count();
            System.out.println(new Hello().new newHello().b);
		}
       
       public  class newHello
       {
    	   int b = 3;
    	   public void count()
    	   {
    		   
    		   System.out.println(a);
    	   }
    	   
       } 
}       

 class Hello2
{
	 public void  test()
	 {
		 System.out.println(new Hello().a);
		 System.out.println(new Hello().a);
	 }
}       

 

  总结:

 

  与.java文件名相同的类是顶级类,顶级类里面的类是内部类,内部类可以被修饰符修饰。

 

 顶级类以外的类不可以被修饰符修饰。

 

 顶级类通过本身对象.内部类对象.属性或者方法调用内部类属性方法。

 

 内部类可以直接用顶级类里面的全局变量。

 

 静态内部类相当于一个单独的类。调用是通过对象调用的。

 

注:以上是本人的理解,没有用很专业的词汇,希望对大家有所帮助。

分享到:
评论

相关推荐

    Java内部类(DOC)

    成员类是指没有使用`static`关键字修饰的内部类。成员类依赖于外部类的实例,因此必须先创建外部类的实例才能访问成员类。 **3.1 成员类的特性** - **访问控制**:成员类同样支持不同的访问级别。 - **访问外部类*...

    day11_static、内部类、权限、参数传递、复习.pdf

    - 静态内部类(Static Nested Class):类似于普通的顶级类,但仍然与外部类有联系。它们不能直接访问外部类的非静态成员,但可以通过实例化外部类对象来访问。 - 非静态内部类(Member Inner Class):可以直接...

    Java内部类

    内部类是指在一个外部类的内部再定义一个类。类名不需要和文件夹相同。内部类可以是静态static的,也可用public,default,protected和private修饰。(而外部顶级类即类名和文件名相同的只能使用public和default)。

    java中内部类的分类及用法.pdf

    内部类的访问控制与外部类类似,可以有public、protected、默认(包级私有)和private修饰符。在内部类中,`this`关键字通常指代当前内部类的实例,而`Outer.this`则指代外部类的实例。当内部类的成员与外部类的成员...

    Java 内部类

    静态内部类是用static关键字修饰的内部类,它不依赖于外部类的实例。这意味着你可以直接使用外部类名来创建静态内部类的实例,而不需要先创建外部类的实例。静态内部类可以访问外部类的所有静态成员,但不能访问非...

    Java 中包的概念,类的说明符与内部类21

    4. 静态嵌套类(Static Nested Class):相当于成员内部类,但可以拥有静态成员,并且可以直接通过外部类访问,无需外部类实例。 在提供的文件列表中,"317.swf"和"316.swf"可能是视频教程的一部分,由孙鑫老师讲解...

    要static还是不要static?

    在Java中,如果一个内部类(嵌套类)被声明为 `static`,那么它被称为静态内部类或者顶级类,它可以没有外部类的引用,可以直接通过外部类名进行访问。例如,`InnerClassNotStaticTest.java` 文件可能包含了这样一个...

    java视频 static关键字

    在Java编程语言中,`static`关键字是一个非常重要的修饰符,它有多种用途,涉及到类、对象以及变量和方法的生命周期。本视频教程详细讲解了`static`关键字在Java中的应用及其背后的原理。 首先,我们要理解`static`...

    java-嵌套类(inner class)-来自oracle官网

    嵌套类主要分为两大类:静态嵌套类(Static Nested Class)和非静态嵌套类(Non-static Nested Class),后者通常被称为内部类(Inner Class)。 - **静态嵌套类**:此类嵌套类被声明为`static`,因此它们与外部类...

    Java入门——Java修饰词总结

    `static`内部类是顶级类,独立于包含它的类。`static`方法和字段分别属于类而非实例,这意味着不论创建多少个实例,这些静态成员只有一份拷贝。`static`初始化块在类加载时执行,而不是在创建实例时。 4. **final**...

    java修饰词的总结.doc

    介绍:static 修饰的内部类是一个顶级类,它和包含类的成员是不相关的。静态方法是类方法,是被指向到所属的类而不是类的实例。静态字段是类字段,无论该字段所在的类创立了多少实例,该字段只存在一个实例被指向到...

    day005 面向对象5-枚举与关键字.doc

    关键词`static`则用于修饰类级别的成员,如字段、方法或内部类。`static`修饰的成员属于类本身,而非类的实例。这意味着它们在类加载时初始化,并且所有类实例共享这些静态成员。例如,当我们使用`static`修饰一个...

    c#的默认访问修饰符小结[文].pdf

    嵌套类型(如类内的类)的访问域受到外部类型的影响,`public`成员的访问域等于外部类型的访问域,`internal protected`、`protected`、`internal`、`private`成员的访问域受到特定条件限制,范围从只允许在声明它们...

    Java中的静态变量静态方法静态块与静态类.docx

    静态类都是内部类,static 不能用于修饰顶级的类。对于单例模式用静态类来实现就是一个很不错的选择。 例如: ```java public class Singleton { private static class SingletonHolder { private static ...

    java 语言中常见易错知识点

    3. **静态内部类(Static Nested Class)与普通内部类(Inner Class)的区别**: - 静态内部类可以直接实例化,不需要外部类的对象,而普通内部类需要外部类的对象。 - 静态内部类不能访问外部类的非静态成员,而...

    Java面试宝典2012版_1

    3、Static Nested Class和Inner Class:静态内部类(Static Nested Class)与非静态内部类(Inner Class)的主要区别在于,静态内部类不需要外部类的实例就能创建对象,而普通内部类需要。此外,静态内部类不能直接...

    Java程序员面试题(有备无患).

    `Collection`是所有集合类的顶级接口,包括Set和List。`Collections`是一个工具类,提供了许多静态方法,用于对集合进行操作,如排序、查找、同步控制等。 6、assert的使用 `assert`是用于调试的语句,它用于断言...

    JAVA程序员面试32问

    - Static Nested Class(静态内部类):静态内部类与普通内部类类似,但它可以被声明为`static`,这意味着不需要外部类的实例就能创建静态内部类的实例。静态内部类不能直接访问外部类的非静态成员,但可以通过外部...

    Java经典试题及答案

    2. **匿名内部类**:匿名内部类没有名称,可以实现接口或继承类(但不能同时继承类和实现接口)。匿名内部类常用于简化代码,特别是当只需要使用一次的类时。 3. **Static Nested Class和Inner Class的区别** - ...

Global site tag (gtag.js) - Google Analytics