finalã¨sealed
Classã®ç¶æ¿ãã¡ã³ãã¼ã®ãªã¼ãã¼ã©ã¤ããå¶éããæ©è½ã¨ãã¦ãfinalãã¨ãsealedãã使ãã¾ãã
- ãfinalãã¯ã¯ã©ã¹ãã¡ã³ãã¼ã«å¯¾ãã¦è¨å®ã§ãã修飾è©ã§ãã
- finalãè¨å®ãããã¯ã©ã¹ã¯ç¶æ¿ã§ãã¾ããã
- finalãè¨å®ãããã¡ã³ãã¼ã¯ãªã¼ãã¼ã©ã¤ãã§ãã¾ããã
- ãsealedãã¯ã¯ã©ã¹ã«è¨å®ã§ãã修飾è©ã§ãã
- sealedã¨ãããã¯ã©ã¹ã¯ãåä¸ãã¡ã¤ã«å ã®ã¯ã©ã¹ããã¯ç¶æ¿ã§ãã¾ãããå¥ãã¡ã¤ã«å ã§å®ç¾©ãããã¯ã©ã¹ã§ã¯ç¶æ¿ã§ãã¾ããã
- ãã ããsealedã¯ã©ã¹ãç¶æ¿ããã¯ã©ã¹ã¯ãå¥ãã¡ã¤ã«ã®ã¯ã©ã¹ãããç¶æ¿ã§ãã¾ãã
// finalã¯ã©ã¹ // ãã®ã¯ã©ã¹ã¯ç¶æ¿ã§ããªãã final class Foo // ããã¯ã¨ã©ã¼ //class ExtendsFoo extends Foo class Var { // final ã¡ã³ãã¼ // ãããã¯ãªã¼ãã¼ã©ã¤ãä¸å¯ final def a = "a" final val b = "b" } class ExtendVar extends Var { //override def a = "aa" // ããã¯ã¨ã©ã¼ //override val b = "bb" // ããã¯ã¨ã©ã¼ } // sealedã¯ã©ã¹ sealed class Hoge { def a = "a" } // sealedã¯ã©ã¹ã®æ´¾çã¯ã©ã¹ãåä¸ãã¡ã¤ã«å ãªã®ã§OK class ExtendsHoge extends Hoge { def b = "b" }
âã¨ã¯å¥ã®ãã¡ã¤ã«ã
// å¥ãã¡ã¤ã«ã®ã¯ã©ã¹ã§ã¯ç¶æ¿ã§ããªãã // âã¯ã¨ã©ã¼ // class ExtendsHogeInOtherFile extends Hoge // sealedã¯ã©ã¹ã®æ´¾çã¯ã©ã¹ã¯å¥ãã¡ã¤ã«ãããå©ç¨ã§ããã class ExtendsExtendsHogeInOtherFile extends ExtendsHoge object FinalClassSample2 { def main(args: Array[String]) { // sealedã¯ã©ã¹ã®ã¡ã½ããå¼ã³åºããOK var a = new ExtendsExtendsHogeInOtherFile println( a.a ) println( a.b ) } }
FinalClassSample2ã®å®è¡çµæã§ãã
a b