<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>5.8.9 特殊类与接口 on 编程那些事儿</title><link>https://before80.github.io/prgms/Kotlin/languageguide/5.8-Classesandinterfaces/5.8.9-Specialclassesandinterfaces/</link><description>Recent content in 5.8.9 特殊类与接口 on 编程那些事儿</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Sun, 13 Sep 2026 18:20:56 +0800</lastBuildDate><atom:link href="https://before80.github.io/prgms/Kotlin/languageguide/5.8-Classesandinterfaces/5.8.9-Specialclassesandinterfaces/index.xml" rel="self" type="application/rss+xml"/><item><title>5.8.9.1 密封类与密封接口</title><link>https://before80.github.io/prgms/Kotlin/languageguide/5.8-Classesandinterfaces/5.8.9-Specialclassesandinterfaces/5.8.9.1-SealedClasses/</link><pubDate>Sun, 13 Sep 2026 08:50:47 +0800</pubDate><guid>https://before80.github.io/prgms/Kotlin/languageguide/5.8-Classesandinterfaces/5.8.9-Specialclassesandinterfaces/5.8.9.1-SealedClasses/</guid><description>&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://kotlinlang.org/docs/sealed-classes.html"&gt;https://kotlinlang.org/docs/sealed-classes.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="5891-密封类与密封接口"&gt;5.8.9.1 密封类与密封接口&lt;/h1&gt;
&lt;p&gt;&lt;em&gt;密封&lt;/em&gt;类与密封接口为类层级提供受控的继承。密封类的所有直接子类在编译期都是已知的。在定义该密封类的模块和包之外，不会出现其他子类。同样的逻辑也适用于密封接口及其实现：一旦包含密封接口的模块编译完成，就无法再创建新的实现。&lt;/p&gt;</description></item><item><title>5.8.9.2 枚举类</title><link>https://before80.github.io/prgms/Kotlin/languageguide/5.8-Classesandinterfaces/5.8.9-Specialclassesandinterfaces/5.8.9.2-EnumClasses/</link><pubDate>Sun, 13 Sep 2026 08:50:47 +0800</pubDate><guid>https://before80.github.io/prgms/Kotlin/languageguide/5.8-Classesandinterfaces/5.8.9-Specialclassesandinterfaces/5.8.9.2-EnumClasses/</guid><description>&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://kotlinlang.org/docs/enum-classes.html"&gt;https://kotlinlang.org/docs/enum-classes.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="5892-枚举类"&gt;5.8.9.2 枚举类&lt;/h1&gt;
&lt;p&gt;枚举类表示一组固定的可能取值。当某个值只能是若干预定义选项之一时（例如可用的状态或模式），就使用枚举类。&lt;/p&gt;
&lt;p&gt;枚举类中的每个值称为一个&lt;em&gt;枚举常量&lt;/em&gt;。枚举常量的行为就像枚举类类型的&lt;a href="../../5.8.7-ObjectDeclarations/"&gt;单例对象&lt;/a&gt;，因此它们可以有属性、函数和自定义行为。&lt;/p&gt;</description></item><item><title>5.8.9.3 内联值类</title><link>https://before80.github.io/prgms/Kotlin/languageguide/5.8-Classesandinterfaces/5.8.9-Specialclassesandinterfaces/5.8.9.3-InlineClasses/</link><pubDate>Sun, 13 Sep 2026 08:50:47 +0800</pubDate><guid>https://before80.github.io/prgms/Kotlin/languageguide/5.8-Classesandinterfaces/5.8.9-Specialclassesandinterfaces/5.8.9.3-InlineClasses/</guid><description>&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://kotlinlang.org/docs/inline-classes.html"&gt;https://kotlinlang.org/docs/inline-classes.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="5893-内联值类"&gt;5.8.9.3 内联值类&lt;/h1&gt;
&lt;p&gt;有时把一个值包装到类中可以创建更具领域特定含义的类型。不过，这会因为额外的堆分配而带来运行时开销。而且，如果被包装的类型是基本类型，性能损失会更明显，因为基本类型通常会被运行时高度优化，而它们的包装类型则不会得到特殊对待。&lt;/p&gt;</description></item><item><title>5.8.9.4 嵌套类与内部类</title><link>https://before80.github.io/prgms/Kotlin/languageguide/5.8-Classesandinterfaces/5.8.9-Specialclassesandinterfaces/5.8.9.4-NestedClasses/</link><pubDate>Sun, 13 Sep 2026 08:50:47 +0800</pubDate><guid>https://before80.github.io/prgms/Kotlin/languageguide/5.8-Classesandinterfaces/5.8.9-Specialclassesandinterfaces/5.8.9.4-NestedClasses/</guid><description>&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://kotlinlang.org/docs/nested-classes.html"&gt;https://kotlinlang.org/docs/nested-classes.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="5894-嵌套类与内部类"&gt;5.8.9.4 嵌套类与内部类&lt;/h1&gt;
&lt;p&gt;类可以嵌套在其他类中：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f"&gt;1
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f"&gt;2
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f"&gt;3
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f"&gt;4
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f"&gt;5
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f"&gt;6
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f"&gt;7
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f"&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-kotlin" data-lang="kotlin"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#76a9f9"&gt;class&lt;/span&gt; &lt;span style="color:#ca72ff"&gt;Outer&lt;/span&gt; &lt;span style="color:#abb2bf"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#76a9f9"&gt;private&lt;/span&gt; &lt;span style="color:#76a9f9"&gt;val&lt;/span&gt; &lt;span style="color:#cebc3a"&gt;bar&lt;/span&gt;&lt;span style="color:#abb2bf"&gt;:&lt;/span&gt; &lt;span style="color:#aa89ea"&gt;Int&lt;/span&gt; &lt;span style="color:#abb2bf"&gt;=&lt;/span&gt; &lt;span style="color:#d19a66"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#76a9f9"&gt;class&lt;/span&gt; &lt;span style="color:#ca72ff"&gt;Nested&lt;/span&gt; &lt;span style="color:#abb2bf"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#76a9f9"&gt;fun&lt;/span&gt; &lt;span style="color:#00b1f7"&gt;foo&lt;/span&gt;&lt;span style="color:#abb2bf"&gt;()&lt;/span&gt; &lt;span style="color:#abb2bf"&gt;=&lt;/span&gt; &lt;span style="color:#d19a66"&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#abb2bf"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#abb2bf"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#76a9f9"&gt;val&lt;/span&gt; &lt;span style="color:#cebc3a"&gt;demo&lt;/span&gt; &lt;span style="color:#abb2bf"&gt;=&lt;/span&gt; &lt;span style="color:#ca72ff"&gt;Outer&lt;/span&gt;&lt;span style="color:#abb2bf"&gt;.&lt;/span&gt;&lt;span style="color:#aa89ea"&gt;Nested&lt;/span&gt;&lt;span style="color:#abb2bf"&gt;().&lt;/span&gt;&lt;span style="color:#aa89ea"&gt;foo&lt;/span&gt;&lt;span style="color:#abb2bf"&gt;()&lt;/span&gt; &lt;span style="color:#8a93a5;font-style:italic"&gt;// == 2
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;接口也可以嵌套使用。类与接口的各种组合都是可能的：你可以在类中嵌套接口、在接口中嵌套类，也可以在接口中嵌套接口。&lt;/p&gt;</description></item><item><title>5.8.9.5 函数式（SAM）接口</title><link>https://before80.github.io/prgms/Kotlin/languageguide/5.8-Classesandinterfaces/5.8.9-Specialclassesandinterfaces/5.8.9.5-FunInterfaces/</link><pubDate>Sun, 13 Sep 2026 08:50:47 +0800</pubDate><guid>https://before80.github.io/prgms/Kotlin/languageguide/5.8-Classesandinterfaces/5.8.9-Specialclassesandinterfaces/5.8.9.5-FunInterfaces/</guid><description>&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://kotlinlang.org/docs/fun-interfaces.html"&gt;https://kotlinlang.org/docs/fun-interfaces.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="5895-函数式sam接口"&gt;5.8.9.5 函数式（SAM）接口&lt;/h1&gt;
&lt;p&gt;只有一个抽象成员函数的接口称为&lt;em&gt;函数式接口&lt;/em&gt;，或&lt;em&gt;单一抽象方法（SAM）接口&lt;/em&gt;。函数式接口可以有多个非抽象成员函数，但只能有一个抽象成员函数。&lt;/p&gt;</description></item></channel></rss>