查看顶层类的源代码
←
顶层类
跳转至:
导航
、
搜索
因为以下原因,你没有权限编辑本页:
你刚才请求的操作只对属于该用户组的用户开放:
用户
您可以查看并复制此页面的源代码:
[[文件:繁体.png|60px|link=頂層類]] [[文件:简体.png|60px|link={{PAGENAME}}]] [[用户:EineBlume|{{CURRENTYEAR}} 年 {{CURRENTMONTH1}} 月 {{CURRENTDAY}} 日 {{CURRENTDAYNAME}}]] {| border="0" cellspacing="0" cellpadding="0" align="center" width="100%" style="padding:0.5em 1em 0.5em 1em; border-radius:8px; background:#ffeeee; margin-bottom:1em; border:2px solid #ff1111;" | {| border="0" cellspacing="0" cellpadding="2" align="center" | style="width:5em" | {| border="0" cellspacing="0" cellpadding="0" align="left" style="width:5em" | '''中文名称''' |} | style="width:20em" | {| border="0" cellspacing="0" cellpadding="0" align="left" style="width:20em" | '''[[顶]][[层]][[类]]''' |} | style="width:5em" | {| border="0" cellspacing="0" cellpadding="0" align="left" style="width:5em" | '''所属学科''' |} | {| border="0" cellspacing="0" cellpadding="0" align="left" style="width:20em" | [[Java 编程语言]] |} |- | align="left" | '''汉语拼音''' | style="width:20em" | {| border="0" cellspacing="0" cellpadding="0" align="left" style="width:20em" | Dǐngcéng Lèi |} | align="left" | '''词条类型''' | {| border="0" cellspacing="0" cellpadding="0" align="left" style="width:20em" | [[Java 术语]] |} |- | align="left" | '''英文名称''' | {| border="0" cellspacing="0" cellpadding="0" align="left" style="width:20em" | '''[[Top-level class]]''' |} | | {| border="0" cellspacing="0" cellpadding="0" align="left" style="width:20em" | |} |} |} [[文件:EineBlume_{{PAGENAME}}.jpg|240px|thumb|right|link=用户:EineBlume|{{PAGENAME}}]] == 前言 == :*本文内容根据 [[Java 教程]]中的《课程:类和对象》编写而成。 :*本文提供的是 [[JDK]] 14 的示例代码。 == 定义 == 顶层类([[Top-level class]]),是 [[Java]] 中对类的一种定义方式。在 <code style="background-color: #f9f2f4; border-radius: 2px; color: #c7254e; font-weight: 600; padding: 2px 3px 2px 2px;">.java</code> 文件中,处于最外层的类就称为'''顶层类''',在其外部不存在将其包围起来的任何代码块。下面的示例就是一个典型的顶层类: <blockquote> <pre> /** * 定义一个公共的顶层类。 */ public class MyClass { public static void main(String[] args) { System.out.println("Hello World!"); } } /* 输出结果: Hello World! */ </pre> </blockquote> == 概述 == 顶层类可声明为 <code style="background-color: #f9f2f4; border-radius: 2px; color: #c7254e; font-weight: 600; padding: 2px 3px 2px 2px;">public</code>,如前面示例中的 MyClass 类,也可声明为[[包私有的]],如下: <blockquote> <pre> /** * 定义一个包私有的顶层类。 */ class PackagePrivateClass { public static void main(String[] args) { System.out.println("PackagePrivateClass:这是一个包私有的顶层类。"); } } /* 输出结果: PackagePrivateClass:这是一个包私有的顶层类。 */ </pre> </blockquote> :*提示:在定义一个类时,如果在 <code style="background-color: #f9f2f4; border-radius: 2px; color: #c7254e; font-weight: 600; padding: 2px 3px 2px 2px;">class</code> 关键字前不加 <code style="background-color: #f9f2f4; border-radius: 2px; color: #c7254e; font-weight: 600; padding: 2px 3px 2px 2px;">public</code>、<code style="background-color: #f9f2f4; border-radius: 2px; color: #c7254e; font-weight: 600; padding: 2px 3px 2px 2px;">private</code> 或 <code style="background-color: #f9f2f4; border-radius: 2px; color: #c7254e; font-weight: 600; padding: 2px 3px 2px 2px;">protected</code> 关键字,那么这个类就声明为'''[[包私有的]]'''(Package-Private),即它是类的默认声明。[[包私有的]]类可在其所在的包内共享,但不能跨包共享。 不允许将顶层类声明为 <code style="background-color: #f9f2f4; border-radius: 2px; color: #c7254e; font-weight: 600; padding: 2px 3px 2px 2px;">private</code> 或 <code style="background-color: #f9f2f4; border-radius: 2px; color: #c7254e; font-weight: 600; padding: 2px 3px 2px 2px;">protected</code>,因为顶层类在本质上不属于私密类。如果将一个顶层类用 <code style="background-color: #f9f2f4; border-radius: 2px; color: #c7254e; font-weight: 600; padding: 2px 3px 2px 2px;">private</code> 或 <code style="background-color: #f9f2f4; border-radius: 2px; color: #c7254e; font-weight: 600; padding: 2px 3px 2px 2px;">protected</code> 关键字隐藏起来(即不对外共享),那就无法创建这个类的实例,等同于没有定义这个类。 此外,不允许将顶层类声明为 <code style="background-color: #f9f2f4; border-radius: 2px; color: #c7254e; font-weight: 600; padding: 2px 3px 2px 2px;">static</code>,因为顶层类在本质上是非静态的,只有在创建其实例时,才会将其加载到内存中。否则,[[Java 编译器]]将会生成一条类似于“<code style="background-color: #f9f2f4; border-radius: 2px; color: #c7254e; font-weight: 600; padding: 2px 3px 2px 2px;">此处不允许使用修饰符 static</code>”的错误消息。 === 并列多个顶层类 === 在 <code style="background-color: #f9f2f4; border-radius: 2px; color: #c7254e; font-weight: 600; padding: 2px 3px 2px 2px;">.java</code> 文件中,允许多个顶层类并列存在,但只能有一个与其文件名同名的、声明为 <code style="background-color: #f9f2f4; border-radius: 2px; color: #c7254e; font-weight: 600; padding: 2px 3px 2px 2px;">public</code> 的顶层类。这个与文件名同名的顶层类可声明为[[包私有的]],但在这个文件中的其他顶层类只能声明为[[包私有的]]。 <blockquote> <pre> /** * 定义一个顶层类。 */ public class TopLevelClass { public static void main(String[] args) { System.out.println("TopLevelClass:这是与 TopLevelClass.java 文件同名的顶层类。"); System.out.println(new AnotherClass().toString()); } } /** * 定义另一个顶层类。 */ class AnotherClass { public AnotherClass() { } @Override public String toString() { return "AnotherClass:这是在 TopLevelClass.java 文件中的另一个顶层类。"; } } /* 输出结果: TopLevelClass:这是与 TopLevelClass.java 文件同名的顶层类。 AnotherClass:这是在 TopLevelClass.java 文件中的另一个顶层类。 */ </pre> </blockquote> 在上述示例中,若将 AnotherClass 类声明为 <code style="background-color: #f9f2f4; border-radius: 2px; color: #c7254e; font-weight: 600; padding: 2px 3px 2px 2px;">public</code>,则 [[Java 编译器]]将会生成一条类似于“<code style="background-color: #f9f2f4; border-radius: 2px; color: #c7254e; font-weight: 600; padding: 2px 3px 2px 2px;">类 AnotherClass 是公共的,应在名为 AnotherClass.java 的文件中声明</code>”的错误消息。 === 声明抽象类 === 可使用 <code style="background-color: #f9f2f4; border-radius: 2px; color: #c7254e; font-weight: 600; padding: 2px 3px 2px 2px;">abstract</code> 关键字,将顶层类声明为[[抽象类]],如下: <blockquote> <pre> public class AbstractClassDemo { public static void main(String[] args) { new Subclass().printName(); } } /** * 定义一个抽象类。 */ abstract class AbstractClass { private final String name; // 定义抽象类的构造方法。 public AbstractClass() { name = "AbstractClass:这是一个抽象类。"; } // 定义一个非抽象方法。 public String getName() { return name; } // 定义一个抽象方法。 public abstract void printName(); } /** * 定义一个子类。 */ class Subclass extends AbstractClass { private final String name; // 定义子类的构造方法。 public Subclass() { super(); name = "Subclass:这是一个抽象类的子类。"; } // 实现父类的抽象方法。 @Override public void printName() { System.out.println(super.getName()); System.out.println(name); } } /* 输出结果: AbstractClass:这是一个抽象类。 Subclass:这是一个抽象类的子类。 */ </pre> </blockquote> 想要了解有关[[抽象类]]的更多信息,请参阅《[[抽象类]]》。 [[Category:技术科学]] [[Category:计算机科学技术]] [[Category:计算机软件]] [[Category:程序设计及其语言]] [[Category:计算机]] [[Category:计算机科学]] [[Category:语言]] [[Category:计算机语言]] [[Category:术语]] [[Category:计算机术语]] [[Category:中文词典]] [[Category:中华大词典]] [[Category:D音词条]] [[Category:D音条目]] [[Category:顶]]
返回
顶层类
。
导航菜单
个人工具
创建账户
登录
名字空间
页面
讨论
变种
查看
阅读
查看源代码
查看历史
操作
搜索
导航
首页
最近更改
随机页面
工具箱
链入页面
相关更改
特殊页面
页面信息
扫描二维码可以用手机浏览词条