{"id":1834,"date":"2023-09-22T11:15:29","date_gmt":"2023-09-22T02:15:29","guid":{"rendered":"http:\/\/mobilelab.khu.ac.kr\/wordpress\/?p=1834"},"modified":"2023-09-22T12:31:33","modified_gmt":"2023-09-22T03:31:33","slug":"class-modifiers-dart3-0","status":"publish","type":"post","link":"http:\/\/mobilelab.khu.ac.kr\/wordpress\/2023\/09\/22\/class-modifiers-dart3-0\/","title":{"rendered":"Class Modifiers (@Dart3.0)"},"content":{"rendered":"\n<p>Class Modifier\uc5d0 \ub300\ud55c \ub2e4\uc74c \uc124\uba85\uc740<a href=\"https:\/\/dart.dev\/language\/records\">,\u00a0<\/a><a href=\"https:\/\/dart.dev\/language\/class-modifiers\" title=\"\">Dart \uacf5\uc2dd \uc0ac\uc774\ud2b8\uc758 \ub0b4\uc6a9(\uc544\ub798\uc758 \ucd9c\ucc98 \ucc38\uc870)<\/a>\uc744 \uae30\ubc18\uc73c\ub85c, \ub3c5\uc790\uc758 \uc774\ud574\ub97c \ub3d5\uae30 \uc704\ud55c \ucd94\uac00\uc801\uc778 \uae00\uc744 \ud3ec\ud568\ud558\uac70\ub098, \ucd9c\ucc98\uc758 \uae00\uc744 \uc218\uc815\ud558\ub294 \ubc29\uc2dd\uc73c\ub85c \uc791\uc131\ud558\uc600\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>Class modifier\ub294 class \ud639\uc740 mixin\uc5d0 \ub300\ud55c \ubcf4\ub2e4 \uba85\ud655\ud55c \uc815\uc758\ub97c \uac00\ub2a5\ud558\uac8c \ud569\ub2c8\ub2e4. Dart 3.0\ubd80\ud130\ub294 \ub2e4\uc74c\uc758 \ud074\ub798\uc2a4 \uc218\uc815\uc790(class modifier)\ub4e4\uc744 \uc9c0\uc6d0\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<ul><li>abstract<\/li><li>base<\/li><li>final<\/li><li>interface<\/li><li>sealed<\/li><li>mixin<\/li><\/ul>\n\n\n\n<p>\uc77c\ubc18\uc801\uc73c\ub85c <meta charset=\"utf-8\">\ud074\ub798\uc2a4 \uc218\uc815\uc790\ub294 class \ud639\uc740 mixin \ud0a4\uc6cc\ub4dc \uc55e\uc5d0 \uc704\uce58\ud569\ub2c8\ub2e4. \uc989 abstract class\uc640 \uac19\uc774 \uc0ac\uc6a9\ud569\ub2c8\ub2e4. <meta charset=\"utf-8\">\ud074\ub798\uc2a4 \uc218\uc815\uc790\uc758 \uc5ed\ud560\uc774 &#8220;\uc81c\ud55c&#8221;\uc744 \ub450\ub294\ub370 \ubaa9\uc801\uc744 \ub450\uace0 \uc788\uc73c\ub2c8, \uc77c\ubc18\uc801\uc778 Class\ub97c \ub9cc\ub4e4\uace0, extend \ud639\uc740 implement\ub97c \ud558\ub294 \uacbd\uc6b0, \uadf8\ub9ac\uace0 \uc77c\ubc18\uc801\uc778 Mixin\uc744 \ub9cc\ub4e4\uace0 \uc2f6\ub2e4\uba74 <meta charset=\"utf-8\">\ud074\ub798\uc2a4 \uc218\uc815\uc790\ub97c \uc0ac\uc6a9\ud558\uc9c0 \uc54a\ub3c4\ub85d \ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\ub9ce\uc740 modifier\ub4e4\uc774 \uc9c0\uc6d0\ub418\uae30\uc5d0, \uac01\uac01\uc758 \uae30\ub2a5\uc5d0 \ub300\ud574\uc11c \ud5f7\uac08\ub9b4 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ub97c \uc704\ud574\uc11c <a href=\"https:\/\/dart.dev\/language\/modifier-reference\">Dart \uacf5\uc2dd \uc0ac\uc774\ud2b8\uc758 Class modifiers reference<\/a>\uc5d0\uc11c\ub294 \uac01 modifier\ubcc4 \ud2b9\uc9d5\uc744 \ud45c\ub85c \ub9cc\ub4e4\uc5b4\uc11c \uc774\ud574\ub97c \ub3d5\uace0 \uc788\uc2b5\ub2c8\ub2e4. <\/p>\n\n\n\n<h4>abstract<\/h4>\n\n\n\n<p>\ucd94\uc0c1 \ud074\ub798\uc2a4 \ub77c\uace0\ub3c4 \ubd88\ub9ac\uc6b0\ub294 abstract class\ub294 \ud074\ub798\uc2a4 \ub0b4\uc758 \ubaa8\ub4e0 \uae30\ub2a5\uc744 \ucc44\uc6b0\uc9c0 \uc54a\ub294 \ud074\ub798\uc2a4\ub97c \ub9cc\ub4e4\uae30 \uc704\ud558\uc5ec \uc774\uc804\uc758 Dart \uc5b8\uc5b4\uc5d0\uc11c\ub3c4 \uc81c\uacf5\ud558\ub294 \ubb38\ubc95\uc785\ub2c8\ub2e4. \uc774\uc804\uc758 \uae30\ub2a5\uacfc \ub3d9\uc77c\ud55c \uc758\ubbf8\ub85c, abstract class\ub97c parent class\ub85c \ud65c\uc6a9\ud558\ub294 child class\uc5d0\uc11c, abstract class\uc5d0\uc11c \ucc44\uc6cc\uc9c0\uc9c0 \uc54a\uc740 \uae30\ub2a5(\uba54\uc18c\ub4dc \ub4f1)\uc744 \uc791\uc131\ud558\ub3c4\ub85d \ud558\ub294 \uc6a9\ub3c4\ub85c \uc0ac\uc6a9\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\ub2e4\uc74c\uc758 \uc608\uc81c\ub294 abstract class\uc778 Vehicle\uacfc, \uc774\ub97c <meta charset=\"utf-8\">parent class\ub85c \uc0ac\uc6a9\ud558\uc5ec \ub9cc\ub4dc\ub294 Car class\uc640 MockVehicle class\ub97c \uc608\uc2dc\ub85c \ubcf4\uc5ec\uc90d\ub2c8\ub2e4. Vehicle class\uc5d0\uc11c declare\ub9cc \ub41c, \uc989 \uba54\uc18c\ub4dc\uc758 \uc774\ub984\uacfc \uc785\ub825 \ud30c\ub77c\uba54\ud130, \uadf8\ub9ac\uace0 \ub9ac\ud134 \uac12\uc758 \ud0c0\uc785\ub9cc \uc815\uc758\ud55c moveForward() \uba54\uc18c\ub4dc\ub97c <meta charset=\"utf-8\">child class\uc778 MockVehicle class\uc5d0\uc11c override\ud558\uc5ec define(\uba54\uc18c\ub4dc \ub0b4\ubd80 \uae30\ub2a5\uc744 \ucc44\uc6b0\ub294 \uc791\uc5c5)\ud558\ub294 \uac83\uc744 \ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Library a.dart\nabstract class Vehicle {\n  void moveForward(int meters);\n}<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Library b.dart\nimport 'a.dart';\n\n\/\/ Error: Cannot be constructed\nVehicle myVehicle = Vehicle();\n\n\/\/ Can be extended\nclass Car extends Vehicle {\n  int passengers = 4;\n  \/\/ \u00b7\u00b7\u00b7\n}\n\n\/\/ Can be implemented\nclass MockVehicle implements Vehicle {\n  @override\n  void moveForward(int meters) {\n    \/\/ ...\n  }\n}<\/code><\/pre>\n\n\n\n<h4>base<\/h4>\n\n\n\n<p>\uac04\ub2e8\ud558\uac8c \uc774\uc57c\uae30 \ud558\uba74, <meta charset=\"utf-8\">base <meta charset=\"utf-8\">\ud074\ub798\uc2a4 \uc218\uc815\uc790\ub85c \uc815\uc758\ud55c \ud074\ub798\uc2a4\ub294, \ud574\ub2f9 \ud074\ub798\uc2a4\uac00 \uc18d\ud55c \ub77c\uc774\ube0c\ub7ec\ub9ac\uc758 \uc678\ubd80\uc5d0\uc11c implement \ud558\ub294 \uac83\uc744 \uae08\uc9c0\ud569\ub2c8\ub2e4. \ud558\uc9c0\ub9cc extent \ud558\ub294 \uac83\uc740 \uac00\ub2a5\ud569\ub2c8\ub2e4. \ub530\ub77c\uc11c <meta charset=\"utf-8\">parent class\uc5d0 \uc815\uc758\ub41c \uc0dd\uc131\uc790\uac00, <meta charset=\"utf-8\">child  class\ub4e4\uc5d0\uc11c \ubc18\ub4dc\uc2dc \ub3d9\uc77c\ud558\uac8c \uc2e4\ud589\ub418\uc5b4\uc57c \ud558\ub294 \ub4f1\uc758 \uc81c\uc57d\uc744 \ub9cc\ub4e4\uace0\uc790 \ud558\ub294 \uacbd\uc6b0\uc5d0 \uc0ac\uc6a9\ud569\ub2c8\ub2e4. \uc0dd\uc131\uc790 \uc678\uc5d0\ub3c4, <meta charset=\"utf-8\">parent class\uc5d0 \uc774\ubbf8 \uc815\uc758\ud55c \uba54\uc18c\ub4dc\ub4e4\uc774 \uc788\ub2e4\uba74, <meta charset=\"utf-8\">child class\ub4e4\uc5d0\uc11c\ub3c4 \ubc18\ub4dc\uc2dc \uac19\uc740 \uba54\uc18c\ub4dc\uac00 \ud638\ucd9c\ub418\ub3c4\ub85d \ud569\ub2c8\ub2e4. <\/p>\n\n\n\n<p>\ub2e4\uc74c\uc758 \uc608\uc81c\ub294 <meta charset=\"utf-8\">base <meta charset=\"utf-8\">\ud074\ub798\uc2a4 \uc218\uc815\uc790\ub85c \uc815\uc758\ud55c Vehicle \ud074\ub798\uc2a4\ub97c extend\ud558\uc5ec Car \ud074\ub798\uc2a4\ub97c \ub9cc\ub4dc\ub294 \uac83\uc740 \uac00\ub2a5\ud55c \uac83\uc744 \ubcf4\uc5ec\uc90d\ub2c8\ub2e4. \ud558\uc9c0\ub9cc Vehicle \ud074\ub798\uc2a4\ub97c implements \ud558\ub294 \uac83\uc740 \ubd88\uac00\ub2a5 \ud55c \uac83\uc744 \ubcf4\uc5ec\uc90d\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Library a.dart\nbase class Vehicle {\n  void moveForward(int meters) {\n    \/\/ ...\n  }\n}<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Library b.dart\nimport 'a.dart';\n\n\/\/ Can be constructed\nVehicle myVehicle = Vehicle();\n\n\/\/ Can be extended\nbase class Car extends Vehicle {\n  int passengers = 4;\n  \/\/ ...\n}\n\n\/\/ ERROR: Cannot be implemented\nbase class MockVehicle implements Vehicle {\n  @override\n  void moveForward() {\n    \/\/ ...\n  }\n}<\/code><\/pre>\n\n\n\n<p>\uc704\uc758 \uc608\uc81c\uc5d0\uc11c \ud55c\uac00\uc9c0 \uc0ac\ud56d\uc744 \ub354 \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc989 child class\uc778 Car \ud074\ub798\uc2a4\ub3c4 base <meta charset=\"utf-8\">\ud074\ub798\uc2a4 \uc218\uc815\uc790\ub97c \uc801\uc6a9\ud55c \uac83 \uc785\ub2c8\ub2e4. \uc774\ub807\uac8c \ud558\uba74, \ub9c8\ucc2c\uac00\uc9c0\ub85c Car \ud074\ub798\uc2a4\ub97c inherit\ud558\ub294 \ud074\ub798\uc2a4\ub294 \ud5c8\uc6a9\ud558\uc9c0\ub9cc, implements\ud558\ub294 \ud074\ub798\uc2a4\ub294 \uc81c\ud55c\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<h4>interface<\/h4>\n\n\n\n<p>interface class\ub85c \uc815\uc758\ud55c \ud074\ub798\uc2a4\uc5d0 \ub300\ud574\uc11c\ub294 implements \ubb38\ubc95\uc744 \ud1b5\ud55c \uc0c8\ub85c\uc6b4 \ud074\ub798\uc2a4 \uc815\uc758\ub9cc \uac00\ub2a5\ud558\uace0, extends \ubb38\ubc95\uc740 \ubd88\uac00\ub2a5\ud569\ub2c8\ub2e4. \uc774\ub97c \ud1b5\ud574\uc11c, \ud2b9\uc815 \ud074\ub798\uc2a4\ub97c implements\ub85c \ud655\uc7a5\ud55c \ud074\ub798\uc2a4\ub4e4\uc774 \uc874\uc7ac\ud558\ub354\ub77c\ub3c4, \uac19\uc740 \uba54\uc18c\ub4dc\ub97c \uc9c0\uc6d0\ud558\ub3c4\ub85d \ud569\ub2c8\ub2e4. \uc774\ub97c \uc6b0\uc544\ud55c \ud45c\ud604\uc73c\ub85c <a href=\"https:\/\/en.wikipedia.org\/wiki\/Fragile_base_class\">fragile base class problem<\/a>\uc744 \ud574\uc18c\ud55c\ub2e4\uace0 \ud569\ub2c8\ub2e4. <\/p>\n\n\n\n<p>\ub2e4\uc74c\uc758 \uc608\uc81c\ub294 interface class\uc778 Vehicle\uc744 implements\ud558\uc5ec MockVehicle \ud074\ub798\uc2a4\ub97c \ub9cc\ub4dc\ub294 \uac83\uc740 \uac00\ub2a5\ud558\uc9c0\ub9cc, extends\ub97c \ud1b5\ud55c Car \ud074\ub798\uc2a4\ub97c \ub9cc\ub4dc\ub294 \uac83\uc744 \ubd88\uac00\ub2a5\ud55c \uac83\uc744 \ubcf4\uc5ec\uc90d\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Library a.dart\ninterface class Vehicle {\n  void moveForward(int meters) {\n    \/\/ ...\n  }\n}<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Library b.dart\nimport 'a.dart';\n\n\/\/ Can be constructed\nVehicle myVehicle = Vehicle();\n\n\/\/ ERROR: Cannot be inherited\nclass Car extends Vehicle {\n  int passengers = 4;\n  \/\/ ...\n}\n\n\/\/ Can be implemented\nclass MockVehicle implements Vehicle {\n  @override\n  void moveForward(int meters) {\n    \/\/ ...\n  }\n}<\/code><\/pre>\n\n\n\n<h4>abstract interface<\/h4>\n\n\n\n<p>abstract \ud074\ub798\uc2a4 \uc218\uc815\uc790\uc640 interface \ud074\ub798\uc2a4 \uc218\uc815\uc790\ub97c \ud568\uaed8 \uc0ac\uc6a9\ud558\ub294 \uacbd\uc6b0\uc785\ub2c8\ub2e4. \ud1b5\uc0c1 pure interface\ub77c\ub294 \ubcc4\uce6d\uc73c\ub85c\ub3c4 \ubd88\ub9bd\ub2c8\ub2e4. \uc774\ub807\uac8c \uc815\uc758\ud55c \ud074\ub798\uc2a4\ub294 \uc2a4\uc2a4\ub85c \uac1d\uccb4\ud654 \ub420 \uc218 \uc5c6\uc73c\uba70, \uc624\ub85c\uc9c0 \ub2e4\ub978 \ud074\ub798\uc2a4\uc5d0\uc11c implements\ud558\uc5ec \ub9cc\ub4e4\uc5b4\uc9c0\ub294 \uc7ac\ub8cc\uc758 \uc5ed\ud560\ub9cc \uc218\ud589\ud569\ub2c8\ub2e4. <\/p>\n\n\n\n<h4>final<\/h4>\n\n\n\n<p>final \ud074\ub798\uc2a4 \uc218\uc815\uc790\ub85c \uc815\uc758\ud55c \ud074\ub798\uc2a4\ub294 \uc0ac\uc6a9\ub9cc \uac00\ub2a5\ud558\uace0 extends \ud639\uc740 implements\ub97c \uae08\uc9c0\ud569\ub2c8\ub2e4. \ub2e4\uc74c\uc758 \uc608\uc81c\ub294 Vehicle \ud074\ub798\uc2a4\ub85c \uac1d\uccb4\ub97c \uc0dd\uc131\ud560 \uc218 \uc788\uc9c0\ub9cc, \uc774\ub97c \uc0ac\uc6a9\ud558\uc5ec Car \ud639\uc740 MockVehicle \ud074\ub798\uc2a4\ub97c \ub9cc\ub4dc\ub294 \uac83\uc740 \ubd88\uac00\ub2a5 \ud560 \uac83\uc744 \ubcf4\uc5ec\uc90d\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Library a.dart\nfinal class Vehicle {\n  void moveForward(int meters) {\n    \/\/ ...\n  }\n}<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Library b.dart\nimport 'a.dart';\n\n\/\/ Can be constructed\nVehicle myVehicle = Vehicle();\n\n\/\/ ERROR: Cannot be inherited\nclass Car extends Vehicle {\n  int passengers = 4;\n  \/\/ ...\n}\n\nclass MockVehicle implements Vehicle {\n  \/\/ ERROR: Cannot be implemented\n  @override\n  void moveForward(int meters) {\n    \/\/ ...\n  }\n}<\/code><\/pre>\n\n\n\n<h4>sealed<\/h4>\n\n\n\n<p>sealed \ud074\ub798\uc2a4 \uc218\uc815\uc790\ub85c \uc815\uc758\ud55c \ud074\ub798\uc2a4\ub294 \ub2e4\uc74c\uc758 \uc81c\uc57d \uc870\uac74\uc744 \uac16\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uccab\uc9f8\ub85c sealed class\ub85c \uc815\uc758\ud55c \ud074\ub798\uc2a4\uc640 \uac19\uc740 \ub77c\uc774\ube0c\ub7ec\ub9ac\uc5d0 \uc704\uce58 \ud558\uc9c0 \uc54a\uc740, \ub77c\uc774\ube0c\ub7ec\ub9ac \ubc16\uc5d0\uc11c\uc758 extend \ud639\uc740 implement\ub294 \ubd88\uac00\ub2a5 \ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\ub458\uc9f8\ub85c sealed class\ub85c \uc815\uc758\ud55c \ud074\ub798\uc2a4\uc640 \uac19\uc740 \ub77c\uc774\ube0c\ub7ec\ub9ac \uc548\uc5d0\uc11c\ub294 extend \ud639\uc740 implement\uac00 \uac00\ub2a5 \ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uc14b\uc9f8\ub85c sealed class\ub85c \uc815\uc758\ud55c \ud074\ub798\uc2a4 \ub9cc\uc73c\ub85c\ub294 \uac1d\uccb4\ub97c \ub9cc\ub4e4\uc218 \uc5c6\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\ub137\uc9f8\ub85c sealed class\uac00 switch \uad6c\ubb38\uc5d0 \uc801\uc6a9\ub418\ub294 \uacbd\uc6b0\ub294, sealed class\uc5d0\uc11c extends\/implements\ub41c \ubaa8\ub4e0 \ud074\ub798\uc2a4\uc5d0 \ub300\ud55c \ucc98\ub9ac\uac00 \uc788\uc5b4\uc57c \ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\ub2e4\uc74c\uc758 \uc608\uc81c\ub294 \uc704\uc758 \uc870\uac74\ub4e4\uc744 \ubcf4\uc5ec\uc8fc\uae30 \uc704\ud574\uc11c \ub9cc\ub4e4\uc5b4 \uc84c\uc2b5\ub2c8\ub2e4. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sealed class Vehicle {}\n\nclass Car extends Vehicle {}\n\nclass Truck implements Vehicle {}\n\nclass Bicycle extends Vehicle {}\n\nString getVehicleSound(Vehicle vehicle) {\n  \/\/ ERROR: The switch is missing the Bicycle subtype or a default case.\n  return switch (vehicle) {\n    Car() => 'vroom',\n    Truck() => 'VROOOOMM',\n    \/\/ TO VOID ERROR: all possible cases should be covered\n    \/\/ _ => '..'\n  };\n}\n\nvoid main() {\n  \/\/ ERROR: Cannot be instantiated\n  Vehicle myVehicle = Vehicle();\n\n  \/\/ Subclasses can be instantiated\n  Vehicle myCar = Car();\n}<\/code><\/pre>\n\n\n\n<p>\uba3c\uc800 Vehicle \ud074\ub798\uc2a4\uac00 sealed class \uc785\ub2c8\ub2e4. \ud558\ub098\uc758 \uc18c\uc2a4 \ucf54\ub4dc\uc774\uae30\uc5d0, Car, Truck, Bicycle \ud074\ub798\uc2a4\ub97c extends \ud639\uc740 implements \ud558\ub294 \uac83\uc740 \uac00\ub2a5\ud569\ub2c8\ub2e4. (\ub458\uc9f8 \uaddc\uce59\uc5d0 \ub300\ud55c \uc608\uc2dc)<\/p>\n\n\n\n<p>main()\ub97c \ubcf4\uba74 Vehicle \ud074\ub798\uc2a4 \ub9cc\uc73c\ub85c \uac1d\uccb4\ub97c \ub9cc\ub4dc\ub294 \uac83\uc740 ERROR\ub85c \uba85\uc2dc\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. (\uc14b\uc9f8 \uaddc\uce59\uc5d0 \ub300\ud55c \uc608\uc2dc)<\/p>\n\n\n\n<p>getVehicleSound() \ud568\uc218\uc5d0\ub294 switch \uad6c\ubb38\uc774 \uc788\ub294\ub370, \ubd80\ud569\ud558\ub294 \uc870\uac74\uc5d0 \ub300\ud55c \ucf54\ub4dc\uc5d0\ub294 sealed class\ub97c extends\ud55c Bicycle \ud074\ub798\uc2a4\uc5d0 \ub300\ud55c \ucc98\ub9ac\uac00 \uc5c6\ub294 \uac83\uc744 \ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub530\ub77c\uc11c \uc774\ub300\ub85c \ud504\ub85c\uadf8\ub7a8\uc744 \uc218\ud589\ud558\uba74 \uc5d0\ub7ec\uac00 \ub0a9\ub2c8\ub2e4. \uc774\ub97c \ud574\uacb0\ud558\uace0\uc790 _ => &#8216;..&#8217; \ucf54\ub4dc\ub97c \uc8fc\uc11d \ud574\uc81c \ud574\uc8fc\uc5b4\uc57c \ud569\ub2c8\ub2e4. (\ub137\uc9f8 \uaddc\uce59\uc5d0 \ub300\ud55c \uc608\uc2dc)<\/p>\n\n\n\n<p>\ub9cc\uc57d sealed class\ub85c \uc815\uc758\ud55c \ud074\ub798\uc2a4\ub97c extends\/implements\ud560 \ud544\uc694\uac00 \uc5c6\ub2e4\uba74, final \ud074\ub798\uc2a4 \uc218\uc815\uc790\ub97c \uc0ac\uc6a9\ud558\ub3c4\ub85d \ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>[\ucd9c\ucc98] <a href=\"https:\/\/dart.dev\/language\/class-modifiers\" title=\"\">https:\/\/dart.dev\/language\/class-modifiers<\/a><\/p>\n\n\n\n<p>[\ucc38\uc870] <a href=\"https:\/\/dart.dev\/language\/modifier-reference\" title=\"\">Class modifiers reference<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Class Modifier\uc5d0 \ub300\ud55c \ub2e4\uc74c \uc124\uba85\uc740,\u00a0Dart \uacf5\uc2dd \uc0ac\uc774\ud2b8\uc758 \ub0b4\uc6a9(\uc544\ub798\uc758 \ucd9c\ucc98 \ucc38\uc870)\uc744 \uae30\ubc18\uc73c\ub85c, \ub3c5\uc790\uc758 \uc774\ud574\ub97c \ub3d5\uae30 \uc704\ud55c \ucd94\uac00\uc801\uc778 \uae00\uc744 \ud3ec\ud568\ud558\uac70\ub098, \ucd9c\ucc98\uc758 \uae00\uc744 \uc218\uc815\ud558\ub294 \ubc29\uc2dd\uc73c\ub85c \uc791\uc131\ud558\uc600\uc2b5\ub2c8\ub2e4. Class modifier\ub294 class \ud639\uc740 mixin\uc5d0 \ub300\ud55c \ubcf4\ub2e4 &#8230;<\/p>\n","protected":false},"author":1,"featured_media":1748,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0},"categories":[3],"tags":[],"aioseo_notices":[],"_links":{"self":[{"href":"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-json\/wp\/v2\/posts\/1834"}],"collection":[{"href":"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-json\/wp\/v2\/comments?post=1834"}],"version-history":[{"count":3,"href":"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-json\/wp\/v2\/posts\/1834\/revisions"}],"predecessor-version":[{"id":1843,"href":"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-json\/wp\/v2\/posts\/1834\/revisions\/1843"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-json\/wp\/v2\/media\/1748"}],"wp:attachment":[{"href":"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-json\/wp\/v2\/media?parent=1834"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-json\/wp\/v2\/categories?post=1834"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-json\/wp\/v2\/tags?post=1834"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}