{"id":141,"date":"2025-12-13T03:11:56","date_gmt":"2025-12-13T03:11:56","guid":{"rendered":"https:\/\/hyc.eshachem.com\/program\/?p=141"},"modified":"2026-04-08T04:37:18","modified_gmt":"2026-04-08T04:37:18","slug":"%e7%89%a9%e4%bb%b6%e5%b0%8e%e5%90%91oop-%e5%9c%a8-java-python-js-c%e4%b8%ad%e7%9a%84%e8%a9%ae%e9%87%8b","status":"publish","type":"post","link":"https:\/\/hyc.eshachem.com\/program\/%e7%89%a9%e4%bb%b6%e5%b0%8e%e5%90%91oop-%e5%9c%a8-java-python-js-c%e4%b8%ad%e7%9a%84%e8%a9%ae%e9%87%8b\/","title":{"rendered":"\u7269\u4ef6\u5c0e\u5411(OOP) \u5728 Java, Python, JS, C++\u4e2d\u7684\u8a6e\u91cb"},"content":{"rendered":"\n<p class=\"\">\u5728\u5b78\u7fd2\u6bcf\u500b\u8a9e\u8a00\u6642\uff0c\u90fd\u4e00\u6703\u5b78\u5230\u6bcf\u500b\u8a9e\u8a00\u7684 &#8220;\u7269\u4ef6&#8221;\uff0c\u4f46\u96a8\u8457\u5b78\u7fd2\u7684\u8a9e\u8a00\u8d8a\u4f86\u8d8a\u591a\uff0c\u6211\u4e5f\u6f38\u6f38\u7684\u958b\u59cb\u6df7\u6dc6\u4e86\u3002<\/p>\n\n\n\n<p class=\"\">\u9019\u7bc7\u6587\u7ae0\u5c31\u4f86\u6df1\u5ea6\u63a2\u8a0e\u4e00\u4e0b<strong>\u7269\u4ef6\u5c0e\u5411(OOP) \u5728 Java, Python, JS, C++\u4e2d\u7684\u8a6e\u91cb <\/strong>\u3002<\/p>\n\n\n\n<p class=\"has-cyan-bluish-gray-color has-text-color has-link-color wp-elements-4a4e3d55c5cf1e4726adbdfb1da1d7aa\">(\u672c\u7bc7\u6587\u7ae0\u975eJava, Python, JS, C++\u7a0b\u5f0f\u8a9e\u8a00\u7684\u57fa\u790e\u6559\u7a0b\uff0c\u5efa\u8b70\u6709\u4e00\u5b9a\u7a0b\u5ea6\u518d\u95b1\u8b80\u3002)<\/p>\n\n\n\n<hr class=\"is-style-wide wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"\">\u8981\u4e86\u89e3\u7269\u4ef6\u5c0e\u5411\u6211\u5011\u9700\u8981\u5148\u4f86\u91d0\u6e05<strong>&#8220;\u7269\u4ef6&#8221;<\/strong>\u4e00\u8a5e\uff0c\u5728\u5404\u500b\u8a9e\u8a00\u4e2d\u7684\u4ee3\u8868\u610f\u7fa9\u3002<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">What is OBJECT ?<\/h1>\n\n\n\n<p class=\"\">\u7e3d\u7d50: object = interface\/attributes \uff0b method\/function<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Java\uff1a<strong>Class-based Object<\/strong><\/h2>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"\">\u7269\u4ef6\u662f<strong>\u985e\u5225 (Class)<\/strong> \u7684<strong>\u5be6\u4f8b (Instance)<\/strong>\u3002<\/p>\n<\/blockquote>\n\n\n\n<p class=\"\">\u7528class\u5ba3\u544a\u7269\u4ef6\uff0c\u7269\u4ef6\u662f <strong>\u985e\u5225 (Class)<\/strong> \u7684<strong>\u5be6\u4f8b (Instance)<\/strong>\uff0c\u900f\u904enew\u95dc\u9375\u5b57\u5efa\u7acb\u7269\u4ef6\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Person {\n  String name;\n  void sayHello() {\n    System.out.println(\"Hi\");\n  }\n}\nPerson p = new Person(); \/\/ p \u662f\u7269\u4ef6<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Python\uff1a<strong>Everything is an Object<\/strong><\/h2>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"\">\u842c\u7269\u7686\u7269\u4ef6\u3002<\/p>\n<\/blockquote>\n\n\n\n<p class=\"\">\u5982\u679c\u4f60\u53bb\u628apython\u4e2d\u7684\u6771\u897f\u90fd\u7528type()\u5370\u51fa\u4f86\u6703\u767c\u73fe\u4ed6\u5011\u90fd\u662fclass\u3002\u5373\u4f7f\u662f\u7c21\u55ae\u7684 <code>5<\/code> (int) \u6216 <code>\"hello\"<\/code> (string)\uff0c\u5b83\u5011\u90fd\u6709\u81ea\u5df1\u7684\u985e\u578b\uff08\u985e\u5225\uff09\u548c\u65b9\u6cd5\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>x = 10\nprint(type(x))  # &lt;class 'int'&gt;\n\ndef foo():\n    pass\n\nprint(type(foo))  # &lt;class 'function'&gt;<\/code><\/pre>\n\n\n\n<p class=\"\">\u4f46\u662fclass\u9084\u662f\u5b58\u5728\uff0c\u53ea\u662f\u8b8a\u6210\u5ba3\u544a\u7269\u4ef6\u7684\u4e00\u7a2e\u65b9\u5f0f\uff0c\u8b93\u4f60\u53ef\u4ee5\u5728\u57f7\u884c\u671f\u52d5\u614b\u52a0\u5c6c\u6027\u7684\u7269\u4ef6\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>p.age = 20<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">JavaScript\uff1a<strong>Prototype-based Object-Oriented<\/strong><\/h2>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"\">\u7269\u4ef6\u662f<strong>\u5c6c\u6027 (Properties)<\/strong> \u7684<strong>\u52d5\u614b\u96c6\u5408<\/strong>\uff0c\u6bcf\u500b\u5c6c\u6027\u90fd\u5c07\u4e00\u500bKey\u6620\u5c04\u5230\u4e00\u500b\u503cValue\u3002<\/p>\n<\/blockquote>\n\n\n\n<p class=\"\">\u7269\u4ef6\u662fJS\u8a9e\u8a00\u7684\u6838\u5fc3\uff0c\u7e7c\u627f\u9760 prototype chain<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>const person = {\n  name: \"Tom\",\n  sayHello() {\n    console.log(\"Hi\");\n  }\n};\nPrototype \u6a5f\u5236\n\nfunction Person(name) {\n  this.name = name;\n}\n\nPerson.prototype.sayHello = function () {\n  console.log(\"Hi\");\n};\n\nconst p = new Person(\"Tom\");<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">C++\uff1a<strong>Object = memory layout<\/strong><\/h2>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"\">\u7269\u4ef6\u662f <strong>Class<\/strong> \u6216<strong>\u7d50\u69cb (Struct)<\/strong> \u7684<strong>\u5be6\u4f8b (Instance)<\/strong>\uff0c\u5ee3\u6cdb\u7684\u5b9a\u7fa9\u70ba: \u5728\u57f7\u884c\u7a0b\u5f0f\u671f\u9593\uff0c\u64c1\u6709\u8a18\u61b6\u9ad4\u5340\u584a\uff0c\u4e26\u4e14\u53ef\u4ee5\u5132\u5b58\u6578\u503c\u7684\u5340\u57df\u3002<\/p>\n<\/blockquote>\n\n\n\n<p class=\"\">\u82e5\u4ee5\u8a18\u61b6\u9ad4\u5340\u9593\u4f86\u5b9a\u7fa9\uff0c\u5373\u4f7f\u662f\u57fa\u672c\u578b\u5225\u7684\u8b8a\u6578\uff08\u4f8b\u5982 <code>int x;<\/code>\uff09\uff0c\u5728\u6280\u8853\u4e0a\u4e5f\u7a31\u70ba\u4e00\u500b\u7269\u4ef6\uff0c\u56e0\u70ba\u5b83\u5728\u8a18\u61b6\u9ad4\u4e2d\u6709\u5132\u5b58\u7a7a\u9593\u3002\u4f46\u7576\u6211\u5011\u4ee5 C++ OOP\u89d2\u5ea6\u4f86\u5b9a\u7fa9\u6642\uff0c\u901a\u5e38\u6307\u7684\u662f\u7531 <code>class<\/code> \u5b9a\u7fa9\u6240\u5efa\u7acb\u7684\u3001\u5305\u542b\u8cc7\u6599\u6210\u54e1\u548c\u6210\u54e1\u51fd\u6578\u7684\u5be6\u4f8b\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Person {\npublic:\n    string name;\n    void sayHello() {\n        cout &lt;&lt; \"Hi\";\n    }\n};\n\nPerson p;        \/\/ stack object\nPerson* ptr = new Person();  \/\/ heap object<\/code><\/pre>\n\n\n\n<p class=\"\">C++\u4e2d\u6709\u5169\u7a2e\u5efa\u7acb\u7269\u4ef6\u7684\u65b9\u5f0f\uff0c\u4f46\u9019\u5169\u7a2e\u53c8\u6709\u4e9b\u5fae\u5dee\u7570:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Stack Object<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code><code>Person p;<\/code><\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"\"><strong>\u5b9a\u7fa9\u8207\u884c\u70ba\uff1a<\/strong>\n<ul class=\"wp-block-list\">\n<li class=\"\"><strong>\u5132\u5b58\u4f4d\u7f6e\uff1a<\/strong> \u7269\u4ef6 <code>p<\/code> \u5132\u5b58\u5728<strong>\u7a0b\u5f0f\u7684\u5806\u758a (Stack)<\/strong> \u8a18\u61b6\u9ad4\u4e2d\u3002<\/li>\n\n\n\n<li class=\"\"><strong>\u751f\u547d\u9031\u671f\uff1a<\/strong> \u9075\u5faa<strong>\u5340\u584a\u4f5c\u7528\u57df (Block Scope)<\/strong>\u3002\u5b83\u5728\u7a0b\u5f0f\u57f7\u884c\u9032\u5165\u5176\u5b9a\u7fa9\u7684\u5340\u584a\u6642\u81ea\u52d5\u5efa\u7acb\uff0c\u4e26\u5728\u57f7\u884c\u96e2\u958b\u8a72\u5340\u584a\u6642\u7d50\u675f\u3002<\/li>\n\n\n\n<li class=\"\"><strong>\u8a18\u61b6\u9ad4\u7ba1\u7406\uff1a<\/strong> \u5b8c\u5168\u7531\u7de8\u8b6f\u5668\u548c\u904b\u884c\u6642\u74b0\u5883<strong>\u81ea\u52d5\u7ba1\u7406<\/strong>\uff0c\u7121\u9700\u624b\u52d5\u91cb\u653e\u8a18\u61b6\u9ad4\u3002<\/li>\n\n\n\n<li class=\"\"><strong>\u512a\u9ede\uff1a<\/strong> \u901f\u5ea6\u5feb\u3001\u6548\u7387\u9ad8\u3001\u6c92\u6709\u8a18\u61b6\u9ad4\u6d29\u6f0f\u7684\u98a8\u96aa\u3002<\/li>\n\n\n\n<li class=\"\"><strong>\u5b58\u53d6\u65b9\u5f0f\uff1a<\/strong> \u76f4\u63a5\u4f7f\u7528\u7269\u4ef6\u540d\u7a31 (<code>p.name<\/code> \u6216 <code>p.sayHello()<\/code>)\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Heap Object<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>P<span style=\"background-color: initial; font-family: inherit; font-size: inherit; text-align: initial; color: initial;\">erson* ptr = new Person();<\/span><\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"\"><strong>\u5b9a\u7fa9\u8207\u884c\u70ba\uff1a<\/strong>\n<ul class=\"wp-block-list\">\n<li class=\"\"><strong>\u5132\u5b58\u4f4d\u7f6e\uff1a<\/strong> \u7269\u4ef6\u5be6\u9ad4\u5132\u5b58\u5728<strong>\u7a0b\u5f0f\u7684\u5806\u7a4d (Heap)<\/strong> \u8a18\u61b6\u9ad4\u4e2d\u3002\u800c\u5132\u5b58\u8a72\u7269\u4ef6<strong>\u4f4d\u5740 (Address)<\/strong> \u7684\u6307\u6a19\u8b8a\u6578 <code>ptr<\/code> \u5247\u901a\u5e38\u4f4d\u65bc<strong>\u5806\u758a<\/strong>(stack)\u4e0a\u3002<\/li>\n\n\n\n<li class=\"\"><strong>\u751f\u547d\u9031\u671f\uff1a<\/strong> \u7269\u4ef6\u672c\u8eab\u4e0d\u4f9d\u8cf4\u65bc\u4f5c\u7528\u57df\u3002\u5b83\u5728\u57f7\u884c <code>new<\/code> \u904b\u7b97\u5b50\u6642\u88ab\u5efa\u7acb\uff0c\u4e26\u6703\u4e00\u76f4\u5b58\u5728\uff0c\u76f4\u5230\u7a0b\u5f0f\u54e1\u624b\u52d5\u547c\u53eb <code>delete<\/code> \u904b\u7b97\u5b50\u70ba\u6b62\u3002<\/li>\n\n\n\n<li class=\"\"><strong>\u8a18\u61b6\u9ad4\u7ba1\u7406\uff1a<\/strong> \u5fc5\u9808<strong>\u624b\u52d5\u7ba1\u7406<\/strong>\u3002\u5982\u679c\u5fd8\u8a18\u547c\u53eb <code>delete ptr;<\/code>\uff0c\u5c31\u6703\u767c\u751f<strong>\u8a18\u61b6\u9ad4\u6d29\u6f0f (Memory Leak)<\/strong>\u3002<\/li>\n\n\n\n<li class=\"\"><strong>\u512a\u9ede\uff1a<\/strong> \u53ef\u4ee5\u5275\u5efa\u5927\u578b\u7269\u4ef6\uff0c\u6216\u5728\u51fd\u6578\u8fd4\u56de\u5f8c\u4ecd\u9700\u8981\u7e7c\u7e8c\u5b58\u5728\u7684\u7269\u4ef6\u3002<\/li>\n\n\n\n<li class=\"\"><strong>\u5b58\u53d6\u65b9\u5f0f\uff1a<\/strong> \u900f\u904e\u6307\u6a19\u4f7f\u7528\u7bad\u982d\u904b\u7b97\u5b50 (<code>-&gt;<\/code>)\uff1a(<code>ptr-&gt;name<\/code> \u6216 <code>ptr-&gt;sayHello()<\/code>)\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p class=\"\">\u4e86\u89e3\u4e86\u7269\u4ef6\u7684\u5b9a\u7fa9\u5f8c\u6211\u5011\u4f86\u770b\u770b\u53c8\u5206\u5225\u5982\u4f55\u5728\u9019\u4e9b\u8a9e\u8a00\u4e2d\u5be6\u8e10\u7269\u4ef6\u5c0e\u5411\u3002<\/p>\n\n\n\n<hr class=\"is-style-wide wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Object-Oriented Programming<\/h1>\n\n\n\n<p class=\"\">\u7269\u4ef6\u5c0e\u5411\u4e0d\u5916\u4e4e\u5c31\u662f\u570d\u7e5e\u8457\u9019\u56db\u500b\u6838\u5fc3\u7684\u958b\u767c\u54f2\u5b78:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"\">\u5c01\u88dd\uff08Encapsulation\uff09<\/li>\n\n\n\n<li class=\"\">\u7e7c\u627f\uff08Inheritance\uff09<\/li>\n\n\n\n<li class=\"\">\u591a\u578b\uff08Polymorphism\uff09<\/li>\n\n\n\n<li class=\"\">\u62bd\u8c61\uff08Abstraction\uff09<\/li>\n<\/ul>\n\n\n\n<p class=\"\">\u9019\u56db\u4ef6\u4e8b\u5728\u300c\u6982\u5ff5\u4e0a\u76f8\u540c\u300d\uff0c\u4f46\u5728\u4e0d\u540c\u8a9e\u8a00\u4e2d<strong>\u5be6\u4f5c\u65b9\u5f0f\u8207\u9650\u5236\u5b8c\u5168\u4e0d\u540c<\/strong>\u3002<\/p>\n\n\n\n<hr class=\"is-style-wide wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Java\uff1a\u6559\u79d1\u66f8\u7d1a\u7684\u7269\u4ef6\u5c0e\u5411<\/h2>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<h4 class=\"wp-block-heading\"><strong>Encapsulation &#8211; Modifier<\/strong>\uff0c \u900f\u904e\u4fee\u98fe\u5b50\u4f86\u5b8c\u6210\u5c01\u88dd<\/h4>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-code\"><code>class User {\n    private String name;\n\n    public String getName() {\n        return name;\n    }\n}<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th><strong>Modifier<\/strong><\/th><th>Visibility\/Access Scope<\/th><\/tr><\/thead><tbody><tr><td>private<\/td><td>\u985e\u5225\u5167<\/td><\/tr><tr><td>default<\/td><td>\u540c package<\/td><\/tr><tr><td>protected<\/td><td>\u7e7c\u627f + package<\/td><\/tr><tr><td>public<\/td><td>\u5168\u4e16\u754c<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"is-style-wide wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<h4 class=\"wp-block-heading\"><strong>Inheritance<\/strong> &#8211; <strong>is-a<\/strong>\u3002\u8868\u662f: &#8230;\u662f\u4e00\u7a2e&#8230; \u7684\u6982\u5ff5\u3002<\/h4>\n<\/blockquote>\n\n\n\n<p class=\"\"><code>Car<\/code> \u7e7c\u627f\u81ea <code>Vehicle<\/code>\uff0c\u8868\u793a\u300c\u6c7d\u8eca\u662f\u4e00\u7a2e\u4ea4\u901a\u5de5\u5177\u300d\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Animal {\n    void speak() {}\n}\n\nclass Dog extends Animal {\n    @Override\n    void speak() {\n        System.out.println(\"Woof\");\n    }\n}\n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"\"><strong>\u55ae\u4e00\u7e7c\u627f<\/strong>\uff0cJava \u4e0d\u5141\u8a31\u5b50\u985e\u5225\u7684\u591a\u91cd\u7e7c\u627f(class X extends A, B)\uff0c\u907f\u514d\u300c\u83f1\u5f62\u554f\u984c\u300d(Diamond Problem)\u3002<\/li>\n\n\n\n<li class=\"\"><code>final<\/code> \u53ef\u963b\u6b62\u5b50\u985e\u5225\u7684\u7e7c\u627f<\/li>\n\n\n\n<li class=\"\"><strong>method override<\/strong>(\u985e\u5225\u5b9a\u7fa9\u4e00\u500b\u8207\u7236\u985e\u5225\u4e2d\u540c\u540d\u3001\u540c\u53c3\u6578\u5217\u8868\u3001\u540c\u8fd4\u56de\u578b\u5225\u7684\u65b9\u6cd5\u6642)\u6709\u56b4\u683c\u6aa2\u67e5\u3002<\/li>\n<\/ul>\n\n\n\n<hr class=\"is-style-wide wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<h4 class=\"wp-block-heading\"><strong>Polymorphism<\/strong> &#8211; <strong>Existence<\/strong> &amp; <strong>Legality<\/strong>\uff0c\u7de8\u8b6f\u5668\u53ea\u78ba\u4fdd\u65b9\u6cd5<strong>\u5b58\u5728<\/strong>\u548c<strong>\u5408\u6cd5\u6027<\/strong>\u3002\u5b83\u4e26\u4e0d\u77e5\u9053\u904b\u884c\u6642\u5177\u9ad4\u6703\u547c\u53eb\u54ea\u500b\u7248\u672c\u7684<code>method\u3002<\/code><\/h4>\n<\/blockquote>\n\n\n\n<p class=\"\">\u6211\u5011\u5f9e<strong>Inheritance<\/strong> \u90a3\u6b04\u7684\u7a0b\u5f0f\u78bc\u7e7c\u7e8c\u5f80\u4e0b\u770b:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Animal a = new Dog();\na.speak();  \/\/ \u8f38\u51fa: Woof<\/code><\/pre>\n\n\n\n<p class=\"\">\u4e0a\u9762\u8aaa\u5230\u4e86\uff0c\u7de8\u8b6f\u5668\u53ea\u78ba\u4fdd\u65b9\u6cd5<strong>\u5b58\u5728<\/strong>\u548c<strong>\u5408\u6cd5\u6027<\/strong>\u3002\u5b83\u4e26\u4e0d\u77e5\u9053\u904b\u884c\u6642\u5177\u9ad4\u6703\u547c\u53eb\u54ea\u500b\u7248\u672c\u7684<code>method<\/code>\uff0c\u6240\u4ee5\u5230\u5e95\u8981\u547c\u53eb\u8ab0\u7684?\u7b54\u6848\u5c31\u662f\u770b<strong>\u7269\u4ef6\u5be6\u9ad4 (Actual Object)<\/strong> \u7684\u578b\u5225\uff0c\u5373 <code>new Dog()<\/code>\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"\"><strong>\u767c\u751f\u7684\u4e8b\u60c5\uff1a<\/strong>\n<ul class=\"wp-block-list\">\n<li class=\"\">\u5728\u7a0b\u5f0f\u904b\u884c\u6642\uff0cJVM (Java Virtual Machine) \u6703\u900f\u904e\u8b8a\u6578 <code>a<\/code> \u6240\u6307\u5411\u7684<strong>\u5be6\u969b\u7269\u4ef6<\/strong>\u4f86\u78ba\u5b9a\u8981\u57f7\u884c\u7684\u65b9\u6cd5\u3002<\/li>\n\n\n\n<li class=\"\">\u96d6\u7136 <code>a<\/code> \u7684\u5f15\u7528\u578b\u5225\u662f <code>Animal<\/code>\uff0c\u4f46\u5b83\u6307\u5411\u7684\u5806\u7a4d (Heap) \u8a18\u61b6\u9ad4\u4e2d\u5b58\u5132\u7684\u662f\u4e00\u500b <code>Dog<\/code> <strong>\u5be6\u9ad4<\/strong>\u3002<\/li>\n\n\n\n<li class=\"\">\u7531\u65bc <code>Dog<\/code> \u8986\u5beb (Override) \u4e86 <code>Animal<\/code> \u7684 <code>speak()<\/code> \u65b9\u6cd5\uff0cJVM \u5c07\u9075\u5faa<strong>\u865b\u64ec\u65b9\u6cd5\u547c\u53eb (Virtual Method Invocation)<\/strong> \u6a5f\u5236\uff0c\u57f7\u884c <code>Dog<\/code> \u985e\u5225\u4e2d\u7684 <code>speak()<\/code> \u65b9\u6cd5\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li class=\"\"><strong>\u7d50\u8ad6\uff1a<\/strong> \u5be6\u969b\u57f7\u884c\u7684\u7a0b\u5f0f\u78bc\u7248\u672c\u662f\u5728\u904b\u884c\u6642\u78ba\u5b9a\u7684\uff0c\u9019\u5c31\u662f<strong>\u52d5\u614b\u7e6b\u7d50 (Dynamic Binding)<\/strong>\u3002\u56e0\u6b64\uff0c\u8f38\u51fa\u662f <code>\"Woof\"<\/code>\u3002<\/li>\n<\/ul>\n\n\n\n<hr class=\"is-style-wide wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<h4 class=\"wp-block-heading\"><strong>Abstraction &#8211; Abstract Class &amp; Interface<\/strong>\uff0c\u5c07\u7cfb\u7d71\u5206\u70ba\u300c\u5982\u4f55\u4f7f\u7528\u300d\u548c\u300c\u5982\u4f55\u5be6\u73fe\u300d\u5169\u5c64\uff0c\u5927\u5927\u63d0\u9ad8\u4e86\u7a0b\u5f0f\u78bc\u7684\u53ef\u7dad\u8b77\u6027\u548c\u53ef\u64f4\u5c55\u6027\u3002<\/h4>\n<\/blockquote>\n\n\n\n<p class=\"\">\u62bd\u8c61\u662f OOP\u4e2d\u6700\u70ba\u9ad8\u968e\u4e14\u91cd\u8981\u7684\u6982\u5ff5\u4e4b\u4e00\uff0c\u6838\u5fc3\u5728\u65bc\u300c\u95dc\u6ce8\u9ede\u5206\u96e2\u300d\u548c\u300c\u5b9a\u7fa9\u5951\u7d04\u300d\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"\"><strong>\u5951\u7d04 (Contract)\uff1a<\/strong> \u62bd\u8c61\u985e\u5225\u548c\u4ecb\u9762\u90fd\u662f\u4e00\u7a2e<strong>\u5951\u7d04<\/strong>\u3002\u4efb\u4f55\u7e7c\u627f\uff08\u6216\u5be6\u73fe\uff09\u5b83\u5011\u7684\u5177\u9ad4\u985e\u5225\uff0c\u90fd\u5fc5\u9808\u9075\u5b88\u4e26\u5be6\u73fe\u9019\u4e9b\u5951\u7d04\u4e2d\u5b9a\u7fa9\u7684\u65b9\u6cd5\u3002<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/**\n * \u62bd\u8c61\u985e\u5225\uff1aShape (\u5f62\u72c0)\n * \u76ee\u7684\uff1a\u5b9a\u7fa9\u6240\u6709\u5e7e\u4f55\u5f62\u72c0\u7684\u901a\u7528\u7d50\u69cb\u548c\u5951\u7d04\u3002\n * \u5099\u8a3b\uff1a\u4f7f\u7528 'abstract' \u95dc\u9375\u5b57\u4fee\u98fe\uff0c\u4e0d\u80fd\u76f4\u63a5\u5be6\u4f8b\u5316\u3002\n *\/\nabstract class Shape {\n\n    protected double length; \n    protected double width; \n    protected double height;\n\n    \/**\n     * \u5efa\u69cb\u51fd\u5f0f (Constructor)\n     * \u7528\u65bc\u521d\u59cb\u5316\u6240\u6709 Shape \u5b50\u985e\u5225\u90fd\u9700\u8981\u7684\u901a\u7528\u5c6c\u6027\u3002\n     *\/\n    public Shape(double length, double width, double height) {\n        this.length = length;\n        this.width = width;\n        this.height = height;\n    }\n\n    \/\/ \u62bd\u8c61\u65b9\u6cd5 (Abstract Method) - \u5fc5\u9808\u7531\u5b50\u985e\u5225\u5ba2\u88fd\u5316\u5be6\u73fe\u7684\u5951\u7d04\n\n    \/**\n     * \u62bd\u8c61\u65b9\u6cd5\uff1aarea() - \u8a08\u7b97\u9762\u7a4d\n     * \u53ea\u6709\u5ba3\u544a\uff0c\u6c92\u6709\u5be6\u4f5c\u5167\u5bb9 (\u65b9\u6cd5\u9ad4)\u3002\n     * \u5951\u7d04\uff1a\u4efb\u4f55\u7e7c\u627f\u81ea Shape \u7684\u5b50\u985e\u5225 (\u5982 Rectangle, Circle) \u90fd\u300e\u5fc5\u9808\u300f\u63d0\u4f9b\u81ea\u5df1\u7684 area() \u5177\u9ad4\u8a08\u7b97\u908f\u8f2f\u3002\n     * @return \u8a72\u5f62\u72c0\u7684\u9762\u7a4d (double)\n     *\/\n    public abstract double area();\n\n    \/\/ \u5177\u9ad4\u65b9\u6cd5 (Concrete Method) - \u5171\u7528\u7684\u65b9\u6cd5\u5be6\u73fe\n\n    \/**\n     * \u5177\u9ad4\u65b9\u6cd5\uff1agetDimensions() - \u53d6\u5f97\u5c3a\u5bf8\u8cc7\u8a0a\n     * \u5be6\u4f5c\u5167\u5bb9\u5df2\u5728\u62bd\u8c61\u985e\u5225\u4e2d\u5b9a\u7fa9\uff0c\u6240\u6709\u5b50\u985e\u5225\u53ef\u4ee5\u76f4\u63a5\u7e7c\u627f\u548c\u4f7f\u7528\uff0c\u7121\u9700\u91cd\u8907\u7de8\u5beb\u3002\n     * @return \u5f62\u72c0\u7684\u5c3a\u5bf8\u63cf\u8ff0\u5b57\u4e32\n     *\/\n    public String getDimensions() {\n        return \"\u5c3a\u5bf8: \u9577=\" + length + \", \u5bec=\" + width + \", \u9ad8=\" + height;\n    }\n\n    \/**\n     * \u5177\u9ad4\u65b9\u6cd5\uff1adisplayInfo() - \u986f\u793a\u5b8c\u6574\u7684\u5f62\u72c0\u8cc7\u8a0a\n     * \u7d50\u5408\u4e86\u5177\u9ad4\u65b9\u6cd5\u548c\u62bd\u8c61\u65b9\u6cd5\u7684\u7d50\u679c\uff0c\u5c55\u793a\u62bd\u8c61\u985e\u5225\u7684\u5354\u540c\u4f5c\u7528\u3002\n     *\/\n    public void displayInfo() {\n        System.out.println(\"--- \u5f62\u72c0\u8cc7\u8a0a ---\");\n        System.out.println(getDimensions());\n        \/\/ \u547c\u53eb\u62bd\u8c61\u65b9\u6cd5 (\u5728\u5b50\u985e\u5225\u4e2d\u5be6\u73fe\u7684\u908f\u8f2f)\n        System.out.println(\"\u8a08\u7b97\u9762\u7a4d: \" + area()); \n        System.out.println(\"-----------------\");\n    }\n}<\/code><\/pre>\n\n\n\n<p class=\"\">\u900f\u904e\u7e7c\u627f\u4f86\u5be6\u73feShape \u62bd\u8c61\u985e\u5225\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Rectangle extends Shape {\n\n    \/\/ \u9577\u65b9\u5f62\u53ea\u9700\u8981\u9577\u548c\u5bec\uff0c\u9ad8\u8a2d\u70ba 0\n    public Rectangle(double length, double width) {\n        \/\/ \u547c\u53eb\u7236\u985e (Shape) \u7684\u5efa\u69cb\u51fd\u5f0f\u4f86\u521d\u59cb\u5316\u901a\u7528\u5c6c\u6027\n        super(length, width, 0); \n    }\n\n    \/\/ \u5be6\u73fe\u62bd\u8c61\u65b9\u6cd5 (Fulfilling the Contract)\n\n    \/**\n     * \u5be6\u4f5c Shape \u985e\u5225\u7684\u62bd\u8c61\u65b9\u6cd5 area()\u3002\n     * \u9019\u662f\u5fc5\u9808\u7684\uff0c\u5426\u5247 Rectangle \u985e\u5225\u672c\u8eab\u4e5f\u5fc5\u9808\u5ba3\u544a\u70ba abstract\u3002\n     * @Override \u8a3b\u89e3\u7528\u65bc\u78ba\u4fdd\u6b63\u78ba\u8986\u5beb\u3002\n     *\/\n    @Override\n    public double area() {\n        \/\/ \u63d0\u4f9b\u9577\u65b9\u5f62\u7279\u6709\u7684\u9762\u7a4d\u8a08\u7b97\u908f\u8f2f\n        return length * width;\n    }\n}<\/code><\/pre>\n\n\n\n<p class=\"\">\u5be6\u969b\u904b\u884c\u770b\u770b<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ \u6e2c\u8a66\u7a0b\u5f0f\npublic class AbstractionTest {\n    public static void main(String&#91;] args) {\n        \/\/ Shape \u62bd\u8c61\u985e\u5225\u4e0d\u80fd\u88ab\u5be6\u4f8b\u5316\uff1aShape s = new Shape(10, 5, 0); \/\/ \u932f\u8aa4\uff01\n\n        \/\/ \u5be6\u4f8b\u5316\u5177\u9ad4\u5b50\u985e\u5225\n        Rectangle rect = new Rectangle(10.0, 5.0);\n\n        \/\/ \u900f\u904e\u591a\u578b\u5f15\u7528 (Polymorphic Reference) \u5b58\u53d6\n        Shape shapeRef = rect; \n\n        \/\/ \u547c\u53eb\u5177\u9ad4\u65b9\u6cd5 (\u5f9e Shape \u7e7c\u627f)\n        shapeRef.displayInfo();\n        \n        \/\/ \u9810\u671f\u8f38\u51fa\uff1a\n        \/\/ --- \u5f62\u72c0\u8cc7\u8a0a ---\n        \/\/ \u5c3a\u5bf8: \u9577=10.0, \u5bec=5.0, \u9ad8=0.0\n        \/\/ \u8a08\u7b97\u9762\u7a4d: 50.0 \n        \/\/ -----------------\n    }\n}<\/code><\/pre>\n\n\n\n<hr class=\"is-style-wide wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Python\uff1a\u7269\u4ef6\u5c0e\u5411\u53ea\u662f\u300c\u5de5\u5177\u300d<\/h2>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<h4 class=\"wp-block-heading\"><strong>Encapsulation &#8211; Conventional<\/strong>\uff0c\u4e0d\u900f\u904e\u4fee\u98fe\u5b50\u4f86\u786c\u6027\u898f\u5b9a\u985e\u5225\u4e2d\u7684\u6210\u54e1\u53ef\u898b\u6027\uff0c\u800c\u662f\u900f\u904e\u8edf\u6027\u5c01\u88dd\uff0c\u4ee5&#8221;\u7d04\u5b9a&#8221;\u4f86\u544a\u77e5\u5176\u4ed6\u958b\u767c\u8005\u3002<\/h4>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-code\"><code>class User:\n    def __init__(self):\n        self._age = 18      # \u4fdd\u8b77\uff08\u7d04\u5b9a\uff09\n        self.__id = 123    # \u540d\u7a31\u6539\u5beb\uff08name mangling\uff09\n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"\">\u55ae\u5e95\u7dda <code>_<\/code> \u958b\u982d\u7684member\uff0c\u8868\u793a\u5b83\u662f<strong>\u53d7\u4fdd\u8b77\u7684 (Protected)<\/strong>\u3002\n<ul class=\"wp-block-list\">\n<li class=\"\"><strong>\u6c92\u6709\u4efb\u4f55\u5b58\u53d6\u9650\u5236<\/strong>\u3002\u53ef\u4ee5\u5f9e\u985e\u5225\u5916\u90e8\u76f4\u63a5\u5b58\u53d6\u548c\u4fee\u6539 <code>obj._age<\/code>\u3002<\/li>\n\n\n\n<li class=\"\">\u544a\u8a34\u5176\u4ed6\u7a0b\u5f0f\u8a2d\u8a08\u5e2b\uff1a<strong>\u300c\u9019\u500b\u6210\u54e1\u662f\u5167\u90e8\u4f7f\u7528\u7684\uff0c\u8acb\u4e0d\u8981\u76f4\u63a5\u5b58\u53d6\u6216\u4fee\u6539\u5b83\u3002\u300d<\/strong> \u547c\u53eb\u8005\u61c9\u8a72\u5c0a\u91cd\u9019\u500b\u7d04\u5b9a\uff0c\u4e26\u900f\u904e\u5c6c\u6027\u6216\u65b9\u6cd5\uff08Getter\/Setter\uff09\u4f86\u9593\u63a5\u64cd\u4f5c\u5b83\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"\">\u96d9\u5e95\u7dda <code>__<\/code> \u958b\u982d\u7684member\u6703\u89f8\u767c Python \u76f4\u8b6f\u5668\u7684<strong>\u540d\u7a31\u6539\u5beb (Name Mangling)<\/strong> \u6a5f\u5236\u3002\n<ul class=\"wp-block-list\">\n<li class=\"\">\u5728\u904b\u884c\u6642\uff0c<code>__id<\/code> \u6703\u88ab\u81ea\u52d5\u6539\u5beb\u6210\u4e00\u500b\u5305\u542b\u985e\u5225\u540d\u7a31\u7684\u552f\u4e00\u540d\u7a31\uff0c\u683c\u5f0f\u70ba <code>ClassName__member<\/code>\u3002\n<ul class=\"wp-block-list\">\n<li class=\"\">\u5728 <code>User<\/code> \u985e\u5225\u5167\uff0c<code>__id<\/code> \u7684\u5be6\u969b\u540d\u7a31\u6703\u8b8a\u6210\uff1a<code>_User__id<\/code>\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li class=\"\">\u5982\u679c\u5f9e\u985e\u5225\u5916\u90e8\u4f7f\u7528 <code>obj.__id<\/code> \u5b58\u53d6\uff0c\u6703\u5f97\u5230 <code>AttributeError<\/code>\uff0c\u56e0\u70ba\u9019\u500b\u540d\u7a31\u5df2\u7d93\u4e0d\u5b58\u5728\u4e86\u3002(\u4f46\u65e2\u7136\u77e5\u9053\u4e86\u4ed6\u7684\u6539\u5beb\u898f\u5247\uff0c\u5176\u5be6\u9084\u662f\u53ef\u4ee5\u7e5e\u904e\u6a5f\u5236\u53bb\u5b58\u53d6)<\/li>\n\n\n\n<li class=\"\">\u96d6\u7136\u5b83\u63d0\u4f9b\u4e86\u6bd4\u55ae\u5e95\u7dda\u66f4\u5f37\u7684\u4fdd\u8b77\uff0c\u4f46\u5b83<mark style=\"background-color:#fcb900a6\" class=\"has-inline-color has-black-color\"><strong>\u4e26\u975e<\/strong>\u771f\u6b63\u7684 private<\/mark>\uff0c\u800c\u662f\u4e00\u7a2e<strong>\u540d\u7a31\u6df7\u6dc6 (Name Obfuscation)<\/strong> \u6a5f\u5236\uff0c\u4e3b\u8981\u662f\u70ba\u4e86\u9632\u6b62\u5c6c\u6027\u540d\u7a31\u5728\u7e7c\u627f\u6642\u8207\u5b50\u985e\u5225\u7684\u540d\u7a31\u767c\u751f<strong>\u885d\u7a81 (Collision)<\/strong>\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Property<\/h3>\n\n\n\n<p class=\"\">\u5728 Python \u4e2d\uff0c\u5be6\u73fe\u5c01\u88dd\u7684\u6700\u4f73\u65b9\u5f0f\u662f\u4f7f\u7528 <strong><code>@property<\/code> \u88dd\u98fe\u5668<\/strong>\uff1a\u5916\u90e8\u7a0b\u5f0f\u78bc\u5c31\u53ef\u4ee5\u50cf\u5b58\u53d6\u666e\u901a\u5c6c\u6027\u4e00\u6a23\u5b58\u53d6 <code>u.age<\/code>\uff0c\u4f46\u5be6\u969b\u4e0a\u537b\u7d93\u904e\u4e86 Setter \u65b9\u6cd5\u7684<strong>\u63a7\u5236\u548c\u9a57\u8b49<\/strong>\uff0c\u5b8c\u7f8e\u5730\u5be6\u73fe\u4e86\u5c01\u88dd\u7684\u76ee\u6a19\u3002<\/p>\n\n\n\n<p class=\"\">\u5728\u5c0d\u4f7f\u7528 <code>@property<\/code> \u5b9a\u7fa9\u7684\u5c6c\u6027\u9032\u884c\u300e\u8ce6\u503c\u300f\u6642\uff0c\u6703\u9032\u5165 <code>@property.setter<\/code> \u65b9\u6cd5\u9032\u884c\u9a57\u8b49\uff1b\u800c\u5728\u300e\u8b80\u53d6\u300f\u8a72\u5c6c\u6027\u6642\uff0c\u6703\u9032\u5165 <code>@property<\/code> \u65b9\u6cd5\uff08Getter\uff09\u7372\u53d6\u503c\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class User:\n    def __init__(self, age):\n        # \u5be6\u969b\u5132\u5b58\u6578\u64da\u7684\u5167\u90e8\u8b8a\u6578 (\u7d04\u5b9a\u4e0d\u76f4\u63a5\u5b58\u53d6)\n        self._age = age \n\n    @property # 1. \u5b9a\u7fa9 Getter (\u8b80\u53d6\u5668)\n    def age(self):\n        print(\"\u6b63\u5728\u8b80\u53d6 age...\")\n        return self._age\n\n    @age.setter # 2. \u5b9a\u7fa9 Setter (\u8a2d\u5b9a\u5668)\n    def age(self, value):\n        print(f\"\u6b63\u5728\u8a2d\u5b9a age \u70ba {value}...\")\n        if 0 &lt; value &lt;= 150: # &lt;--- \u5728\u9019\u88e1\u9032\u884c\u9a57\u8b49\uff01\n            self._age = value\n        else:\n            raise ValueError(\"\u5e74\u9f61\u5fc5\u9808\u5728 1 \u5230 150 \u4e4b\u9593\")\n\n# --- \u5916\u90e8\u547c\u53eb ---\nu = User()\n\n# \u5916\u90e8\u7a0b\u5f0f\u78bc\u770b\u8d77\u4f86\u50cf\u5728\u5b58\u53d6\u5c6c\u6027\uff0c\u4f46\u5be6\u969b\u4e0a\u547c\u53eb\u4e86 Getter\nprint(u.age) \n# \u8f38\u51fa: \u6b63\u5728\u8b80\u53d6 age... \/ 10\n\n# \u5916\u90e8\u7a0b\u5f0f\u78bc\u770b\u8d77\u4f86\u50cf\u5728\u8ce6\u503c\uff0c\u4f46\u5be6\u969b\u4e0a\u547c\u53eb\u4e86 Setter\ntry:\n    u.age = 160 \nexcept ValueError as e:\n    print(f\"\u932f\u8aa4: {e}\") \n# \u8f38\u51fa: \u6b63\u5728\u8a2d\u5b9a age \u70ba 160... \/ \u932f\u8aa4: \u5e74\u9f61\u5fc5\u9808\u5728 1 \u5230 150 \u4e4b\u9593<\/code><\/pre>\n\n\n\n<hr class=\"is-style-wide wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<h4 class=\"wp-block-heading\"><strong>Inheritance &#8211; Multiple &amp;<\/strong> <strong>C3 Linearization<\/strong>\uff0c\u5141\u8a31\u591a\u91cd\u7e7c\u627f\uff0c\u4e26\u900f\u904e<strong>C3 Linearization<\/strong>\u7b97\u6cd5\u89e3\u6c7a\u83f1\u5f62\u554f\u984c\u3002<\/h4>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-code\"><code>class Flyable:\n    def fly(self): pass\n\nclass Bat(Animal, Flyable): # Bat \u540c\u6642\u7e7c\u627f\u81ea Animal \u548c Flyable\n    pass<\/code><\/pre>\n\n\n\n<p class=\"\">\u7576\u4e00\u500b\u985e\u5225\u5f9e\u591a\u500b\u7236\u985e\u5225\u7e7c\u627f\u4e86\u540c\u540d\u7684\u65b9\u6cd5\u6642\uff08\u4f8b\u5982\uff0c<code>A<\/code> \u548c <code>B<\/code> \u90fd\u6709 <code>do_something()<\/code> \u65b9\u6cd5\uff0c\u800c <code>C<\/code> \u7e7c\u627f\u4e86 <code>A<\/code> \u548c <code>B<\/code>\uff09\uff0cPython \u5fc5\u9808\u6c7a\u5b9a\u57f7\u884c\u54ea\u4e00\u500b\u7248\u672c\u3002<\/p>\n\n\n\n<p class=\"\">Python \u4f7f\u7528\u4e00\u7a2e\u7a31\u70ba <strong>C3 \u7dda\u6027\u5316\u7b97\u6cd5 (C3 Linearization)<\/strong> \u4f86\u78ba\u5b9a <strong>\u65b9\u6cd5\u89e3\u6790\u9806\u5e8f<\/strong> (Method Resolution Order, <mark style=\"background-color:#fcb9009c\" class=\"has-inline-color\">MRO<\/mark>)\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"\"><strong>MRO \u6982\u5ff5\uff1a<\/strong> MRO \u5b9a\u7fa9\u4e86 Python \u641c\u5c0b\u65b9\u6cd5\u6216\u5c6c\u6027\u7684\u9806\u5e8f\u3002\u7576\u547c\u53eb\u4e00\u500b\u65b9\u6cd5\u6642\uff0cPython \u6703\u4f9d\u64da\u9019\u500b\u9806\u5e8f\uff0c\u5f9e\u7576\u524d\u985e\u5225\u958b\u59cb\uff0c\u5411\u4e0a\u8ffd\u6eaf\u5230\u6240\u6709\u7236\u985e\u5225\uff0c\u76f4\u5230\u627e\u5230\u8a72\u65b9\u6cd5\u70ba\u6b62\u3002<\/li>\n\n\n\n<li class=\"\"><strong>\u5982\u4f55\u67e5\u770b MRO\uff1a<\/strong> \u53ef\u4ee5\u4f7f\u7528\u985e\u5225\u7684 <code>.__mro__<\/code> \u5c6c\u6027\u6216 <code>mro()<\/code> \u65b9\u6cd5\u4f86\u67e5\u770b\u9019\u500b\u9806\u5e8f\u3002<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code># \u7bc4\u4f8b\uff1a\nclass Base: pass\nclass A(Base): pass\nclass B(Base): pass\nclass C(A, B): pass\n\nprint(C.mro())\n# \u8f38\u51fa: &#91;&lt;class 'C'&gt;, &lt;class 'A'&gt;, &lt;class 'B'&gt;, &lt;class 'Base'&gt;, &lt;class 'object'&gt;]<\/code><\/pre>\n\n\n\n<hr class=\"is-style-wide wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<h4 class=\"wp-block-heading\"><strong>Polymorphism &#8211; Duck Typing<\/strong>\uff0c\u7269\u4ef6<strong>\u662f\u4ec0\u9ebc\u578b\u5225<\/strong>\u91cd\u8981\uff0c\u800c\u662f\u5b83<strong>\u80fd\u505a\u4ec0\u9ebc\u884c\u70ba<\/strong>\u3002<\/h4>\n<\/blockquote>\n\n\n\n<p class=\"\"><mark style=\"background-color:#fcb900ad\" class=\"has-inline-color\">\u9d28\u5b50\u578b\u5225<\/mark>\u7684\u6838\u5fc3\u601d\u60f3\u662f\uff1a\u300c\u5982\u679c\u5b83\u8d70\u8d77\u4f86\u50cf\u9d28\u5b50\uff0c\u53eb\u8d77\u4f86\u50cf\u9d28\u5b50\uff0c\u90a3\u9ebc\u5b83\u5c31\u662f\u4e00\u96bb\u9d28\u5b50\u3002\u300d\uff08If it walks like a duck and quacks like a duck, it&#8217;s a duck.\uff09<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>def make_sound(animal):\n    # Python \u5728\u7de8\u8b6f\u671f\u4e0d\u77e5\u9053 animal \u662f\u4ec0\u9ebc\u578b\u5225\n    # \u5b83\u53ea\u77e5\u9053\u5728\u904b\u884c\u6642\uff0c\u5b83\u9700\u8981 animal \u6709\u4e00\u500b speak() \u65b9\u6cd5\n    animal.speak()<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"\"><strong>Java\/C++ (\u975c\u614b\u591a\u578b)\uff1a<\/strong> \u5fc5\u9808\u900f\u904e<strong>\u7e7c\u627f<\/strong>\uff08Inheritance\uff09\u6216<strong>\u4ecb\u9762<\/strong>\uff08Interface\uff09\u4f86\u78ba\u4fdd\u7269\u4ef6\u5177\u6709\u901a\u7528\u7684\u7236\u985e\u6216\u4ecb\u9762\u578b\u5225\uff0c\u624d\u80fd\u5be6\u73fe\u591a\u578b\u3002<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"\"><strong>Python (\u52d5\u614b\u591a\u578b)\uff1a<\/strong> \u4e0d\u8981\u6c42\u7e7c\u627f\u95dc\u4fc2\uff0c\u53ea\u8981\u6c42\u7269\u4ef6\u5728\u904b\u884c\u6642\u5177\u5099\u6240\u9700\u7684\u65b9\u6cd5\u3002\n<ul class=\"wp-block-list\">\n<li class=\"\"><strong>\u6c92\u6709\u7de8\u8b6f\u671f\u6aa2\u67e5\u4ecb\u9762\uff1a<\/strong> Python \u6c92\u6709\u7de8\u8b6f\u671f\uff0c\u6240\u4ee5\u4e0d\u6703\u6709\u4eba\u6aa2\u67e5<strong>Existence<\/strong> &amp; <strong>Legality<\/strong>\u3002<\/li>\n\n\n\n<li class=\"\"><strong>\u65b9\u6cd5\u5c31\u662f\u4ecb\u9762\uff1a<\/strong> \u65b9\u6cd5\u672c\u8eab\uff08\u5373 <code>speak()<\/code> \u9019\u500b\u540d\u7a31\uff09\u5c31\u662f\u5951\u7d04\u3002\u53ea\u8981\u7269\u4ef6\u6709\u9019\u500b\u300c\u884c\u70ba\u300d\uff0c\u5b83\u5c31\u9075\u5b88\u4e86\u5951\u7d04\u3002<\/li>\n\n\n\n<li class=\"\"><strong>\u932f\u8aa4\u5ef6\u9072\uff1a<\/strong> \u6f5b\u5728\u7684\u578b\u5225\u932f\u8aa4\uff08\u4f8b\u5982\u50b3\u5165\u7684\u7269\u4ef6\u6c92\u6709 <code>speak<\/code> \u65b9\u6cd5\uff09\u4e0d\u6703\u5728\u7a0b\u5f0f\u958b\u59cb\u524d\u88ab\u767c\u73fe\uff0c\u800c\u662f\u6703\u5ef6\u9072\u5230<strong>\u904b\u884c\u6642<\/strong>\u5be6\u969b\u57f7\u884c\u5230 <code>animal.speak()<\/code> \u9019\u884c\u7a0b\u5f0f\u78bc\u6642\u624d\u6703\u7206\u767c\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<hr class=\"is-style-wide wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<h4 class=\"wp-block-heading\"><strong>Abstraction &#8211; abc model<\/strong>\uff0c\u52d5\u614b\u8a9e\u8a00\u5c0e\u81f4\u4e0a\u8ff0\u7684\u932f\u8aa4\u5ef6\u9072\uff0c\u9019\u6642\u53ef\u4ee5\u4f7f\u7528\u5957\u4ef6\u589e\u5f37\u932f\u8aa4\u6aa2\u67e5\u3002<\/h4>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-code\"><code>from abc import ABC, abstractmethod\n\nclass Shape(ABC):    \n    @abstractmethod\n    def area(self):\n        pass<\/code><\/pre>\n\n\n\n<p class=\"\"><strong>\u5be6\u73fe\u65b9\u5f0f\uff1a<\/strong> \u7531\u65bc Python \u9810\u8a2d\u662f Duck Typing\uff0c\u70ba\u4e86\u5f37\u5236\u5be6\u73fe\u50cf Java \u90a3\u6a23\u7684\u300c\u5951\u7d04\u300d\uff0cPython \u63d0\u4f9b\u4e86\u6a19\u6e96\u51fd\u5f0f\u5eab <strong><code>abc<\/code> (Abstract Base Classes)<\/strong> \u6a21\u7d44\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"\"><strong><code>ABC<\/code>\uff1a<\/strong> \u4efb\u4f55\u7e7c\u627f\u81ea <code>ABC<\/code> \u7684\u985e\u5225\u90fd\u88ab\u8996\u70ba\u62bd\u8c61\u57fa\u985e\u3002<\/li>\n\n\n\n<li class=\"\"><strong><code>@abstractmethod<\/code>\uff1a<\/strong> \u6a19\u8a18\u5728\u65b9\u6cd5\u4e0a\uff0c\u5ba3\u544a\u9019\u500b\u65b9\u6cd5<strong>\u5fc5\u9808<\/strong>\u7531\u5b50\u985e\u5225\u5be6\u73fe\u3002<\/li>\n\n\n\n<li class=\"\">\u5982\u679c\u4e00\u500b\u985e\u5225\u7e7c\u627f\u4e86 <code>Shape(ABC)<\/code> \u4e26\u4e14\u5e36\u6709 <code>@abstractmethod<\/code> \u7684\u65b9\u6cd5\uff0c\u7576\u5617\u8a66<strong>\u5be6\u4f8b\u5316 (Instantiate)<\/strong> \u9019\u500b\u5b50\u985e\u5225\u6642\uff0c\u5982\u679c\u6c92\u6709\u5be6\u73fe\u6240\u6709\u62bd\u8c61\u65b9\u6cd5\uff0cPython \u6703\u7acb\u5373\u62cb\u51fa <code>TypeError<\/code>\u3002<\/li>\n<\/ul>\n\n\n\n<p class=\"\"><strong>Python \u4e0d\u5f37\u5236\u62bd\u8c61<\/strong>!<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"\"><strong>Python \u53ef\u4ee5<\/strong>\u5728\u4e0d\u4f7f\u7528 <code>abc<\/code> \u6a21\u7d44\u7684\u60c5\u6cc1\u4e0b\u7de8\u5beb\u7a0b\u5f0f\u78bc\uff0c\u4f9d\u9760 Duck Typing \u9054\u6210\u591a\u578b\u3002<code>abc<\/code> \u7684\u4f7f\u7528\u662f<strong>\u81ea\u9858\u7684<\/strong>\uff0c\u662f\u70ba\u4e86\u63d0\u4f9b\u66f4\u6e05\u6670\u7684\u67b6\u69cb\u548c\u66f4\u5f37\u7684\u932f\u8aa4\u6aa2\u67e5\u3002<\/li>\n\n\n\n<li class=\"\"><strong>Java<\/strong> \u5982\u679c\u5ba3\u544a\u4e00\u500b <code>abstract class<\/code> \u6216 <code>interface<\/code>\uff0c\u7de8\u8b6f\u5668\u6703<strong>\u5f37\u5236<\/strong>\u6aa2\u67e5\u5176\u6240\u6709\u5177\u9ad4\u5b50\u985e\u5225\u662f\u5426\u5be6\u73fe\u4e86\u6240\u6709\u62bd\u8c61\u65b9\u6cd5\u3002\u9019\u7a2e\u7d04\u675f\u662f<strong>\u7de8\u8b6f\u6642 (Compile-Time)<\/strong> \u7684\uff0c\u7121\u5f9e\u898f\u907f\u3002<\/li>\n<\/ul>\n\n\n\n<hr class=\"is-style-wide wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">JavaScript\uff1a\u7269\u4ef6\u5c0e\u5411 \u2260 class<\/h2>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"\"><strong>\u300c\u7269\u4ef6\u76f4\u63a5\u5b58\u5728\uff0cclass \u662f\u5f8c\u4f86\u52a0\u7684\u300d<\/strong><\/p>\n<\/blockquote>\n\n\n\n<p class=\"\">\u5728\u975c\u614b\u8a9e\u8a00\u4e2d(java,C++)\u6211\u5011\u8981\u5ba3\u544a\u7269\u4ef6\u90fd\u8981\u900f\u904e\u985e\u5225(Class)\uff0c\u4f46\u5728JS\u4e2d\uff0c\u7269\u4ef6\u662f\u4e0d\u9700\u7528\u900f\u904eclass\u7684(\u4e0d\u904eJS\u6709\u63d0\u4f9bclass\u8a9e\u6cd5\u7cd6)\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>const user = {\n  name: \"Tom\",\n  getName() {\n    return this.name;\n  }\n};<\/code><\/pre>\n\n\n\n<p class=\"\">JS \u539f\u751f\u662f <strong>Prototype-based<\/strong>\uff0c\u7269\u4ef6\u662f<strong>\u9375\u503c\u5c0d (Key-Value Pairs)<\/strong> \u7684\u52d5\u614b\u96c6\u5408\uff0c\u5c07\u6578\u64da (<code>name<\/code>) \u548c\u64cd\u4f5c\u6578\u64da\u7684\u884c\u70ba (<code>getName()<\/code>) \u6346\u7d81\u5728\u4e00\u8d77\u3002<\/p>\n\n\n\n<p class=\"\">\u6240\u6709\u7684\u5b58\u53d6\u5168\u90fd\u662fpublic\u7684\uff0c\u76f4\u5230ES11\u624d\u5f15\u5165\u4e86private\u7684\u5beb\u6cd5:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class User {\n  #id = 123; \/\/ \u79c1\u6709\u5c6c\u6027\n\n  constructor(name) {\n    this.name = name;\n  }\n\n  getId() {\n    return this.#id; \/\/ \u53ea\u80fd\u5728\u985e\u5225\u5167\u90e8\u5b58\u53d6\n  }\n}\n\nconst user2 = new User(\"Jane\");\n\/\/ user2.#id; \/\/ \u932f\u8aa4\uff0c\u7121\u6cd5\u5728\u5916\u90e8\u5b58\u53d6<\/code><\/pre>\n\n\n\n<hr class=\"is-style-wide wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<h4 class=\"wp-block-heading\"><strong>Inheritance &#8211; Prototype Chain<\/strong>\uff0c\u5be6\u4f8b -&gt;\u5b50\u985e\u539f\u578b -&gt; \u7236\u985e\u539f\u578b -&gt; Object \u539f\u578b\u3002<\/h4>\n<\/blockquote>\n\n\n\n<p class=\"\">\u5728 JavaScript \u4e2d\uff0c\u7e7c\u627f\u4e26\u975e\u50cf\u50b3\u7d71\u8a9e\u8a00\u90a3\u6a23\u8907\u88fd\u7a0b\u5f0f\u78bc\uff0c\u800c\u662f\u5efa\u7acb\u4e00\u689d<strong>\u93c8\u63a5<\/strong>\uff0c\u7576\u547c\u53eb\u4e00\u500b\u65b9\u6cd5\u6642\uff0cJS \u5f15\u64ce\u6703\u6cbf\u8457\u9019\u689d\u93c8\u9010\u5c64\u67e5\u627e\uff0c\u76f4\u5230\u627e\u5230\u7b2c\u4e00\u500b\u5339\u914d\u7684\u65b9\u6cd5\u70ba\u6b62\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>function Animal() { \/\/ \u5efa\u69cb\u51fd\u5f0f (Constructor Function) &amp; \u5efa\u7acb\u985e\u5225(Class)\n    this.name = \"Instance Name\";\n}\n\nAnimal.prototype.speak = function () {\n    console.log(`${this.name} says Woof!`); \n};\n\nconst dog1 = new Animal(); \ndog1.name = \"Snoopy\"; \/\/ \u8a2d\u5b9a\u5be6\u4f8b\u540d\u7a31\n\nconst dog2 = new Animal();\ndog2.name = \"Pluto\";\n\ndog1.speak(); \/\/ \u8f38\u51fa: Snoopy says Woof!\ndog2.speak(); \/\/ \u8f38\u51fa: Pluto says Woof!<\/code><\/pre>\n\n\n\n<p class=\"\"><strong>\u539f\u578b\u7269\u4ef6 (Prototype Object)<\/strong> \u6307\u7684\u5c31\u662fAnimal\u9019\u7a2e\u5177\u6709&#8221;\u96d9\u91cd\u8eab\u5206&#8221;\u7684function\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"\">\u9019\u500b\u539f\u578b\u7269\u4ef6\u662f\u6240\u6709 <strong>\u672a\u4f86\u5c07\u7531 <code>Animal<\/code> \u5275\u5efa\u51fa\u4f86\u7684\u5be6\u4f8b<\/strong> \u6240\u5171\u4eab\u7684\u300c\u5009\u5eab\u300d\u3002JS\u6703\u628a\u5171\u7528\u7684\u65b9\u6cd5\uff08\u884c\u70ba\uff09\u653e\u5728\u9019\u88e1\uff0c\u4ee5\u7bc0\u7701\u8a18\u61b6\u9ad4\u3002<\/li>\n<\/ul>\n\n\n\n<p class=\"\">\u5982\u679c\u7528\u4e0b\u9762\u9019\u7a2e\u5beb\u6cd5\uff0c\u7576\u5275\u5efa\u4e00\u500b\u65b0\u7269\u4ef6\u6642(new Animal()) \uff0c\u6bcf\u500b\u7269\u4ef6\u90fd\u6703\u6709\u81ea\u5df1\u7684speak\uff0c\u5982\u679c\u5275\u5efa 100 \u500b\u5be6\u4f8b\uff0c\u5c31\u6703\u6709 <strong>100 \u500b<\/strong>\u529f\u80fd\u5b8c\u5168\u76f8\u540c\u7684 <code>speak<\/code> \u51fd\u6578\u5be6\u9ad4\u5728\u8a18\u61b6\u9ad4\u4e2d\u3002NO!<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>function Animal() {\n    this.name = \"Instance Name\"; \/\/ \u5be6\u4f8b\u5c6c\u6027\n\n    \/\/ \u5beb\u6cd5\u4e8c\uff1a\u65b9\u6cd5\u5b9a\u7fa9\u5728\u5efa\u69cb\u51fd\u5f0f\u5167\n    this.speak = function () {\n        console.log(\"Woof\");\n    };\n}<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"\"><\/li>\n<\/ul>\n\n\n\n<hr class=\"is-style-wide wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"\">JS \u7684\u591a\u5f62\u8207python\u4e00\u6a23\u4f7f\u7528<strong>\u9d28\u5b50\u578b\u5225 (Duck Typing)<\/strong><\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>function makeSound(obj) {\n  obj.speak();\n}\nDog.prototype.speak = function() { console.log(\"Woof!\"); }\t\/\/ \u8f38\u51fa \"Woof!\"\nCat.prototype.speak = function() { console.log(\"Meow!\"); }\t\/\/ \u8f38\u51fa \"Meow!\"\nconst robot = { speak: () =&gt; console.log(\"Beep Boop.\") };<\/code><\/pre>\n\n\n\n<hr class=\"is-style-wide wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<h4 class=\"wp-block-heading\"><strong>JS\u6c92\u6709\u62bd\u8c61\uff0c\u4f46TS\u6709 &#8211; interface\u3002<\/strong><\/h4>\n<\/blockquote>\n\n\n\n<p class=\"\">\u56e0\u70baTS\u672c\u4f86\u5c31\u662f\u7528\u4f86\u5728\u7de8\u8b6f\u524d\u5c31\u5148\u6aa2\u67e5\u932f\u8aa4\u7684JS\u9032\u5316\u7248\uff0c\u6240\u4ee5\u4e5f\u6703\u6709\u56b4\u683c\u6aa2\u67e5\u57f7\u884c\u7684\u62bd\u8c61\u4ecb\u9762\uff0c\u4e5f\u5c31\u662f\u524d\u7aef\u958b\u767c\u6700\u5e38\u7528\u7684Inteerface\u3002<\/p>\n\n\n\n<p class=\"\">\u524d\u7aef\u958b\u767c\u4e2d\uff0ctype\u8207interface\u4e5f\u6703\u512a\u5148\u9078\u64c7interface\uff0c\u56e0\u70ba\u5ba3\u544a\u5408\u4f75 (Declaration Merging)\u9019\u9805\u7279\u6027\u5728\u64f4\u5c55<strong>\u7b2c\u4e09\u65b9\u5eab\u7684\u578b\u5225<\/strong>\u6216\u5728<strong>\u6a21\u7d44\u5316<\/strong>\u5c08\u6848\u4e2d\u975e\u5e38\u6709\u7528\u3002\u5b83\u63d0\u4f9b\u4e86\u4e00\u500b\u6e05\u6670\u4e14\u975e\u7834\u58de\u6027\u7684\u65b9\u5f0f\u4f86\u589e\u52a0\u73fe\u6709\u578b\u5225\u7684\u529f\u80fd\uff0c\u800c\u4e0d\u9700\u8981\u53bb\u4fee\u6539\u539f\u59cb\u5b9a\u7fa9\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>interface Options { id: number; }\n\ninterface Options { verbose: boolean; } \/\/ TS \u81ea\u52d5\u5408\u4f75\n\n\/\/ \u6700\u7d42 Options: { id: number; verbose: boolean; }<\/code><\/pre>\n\n\n\n<hr class=\"is-style-wide wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">C++ : \u7269\u4ef6\u5c31\u662f\u4f60\u5b9a\u7fa9\u7684\u8a18\u61b6\u9ad4\u5340\u584a<\/h2>\n\n\n\n<p class=\"\">C++\u7684\u7269\u4ef6\u5c0e\u5411\u8207\u540c\u70ba\u975c\u614b\u8a9e\u8a00\u7684JAVA\u9ad8\u5ea6\u76f8\u4f3c\uff0c\u53ea\u4e0d\u904eC++\u7684\u8a2d\u8a08\u54f2\u5b78\u66f4\u63a5\u8fd1\u8b93\u958b\u767c\u8005\u64cd\u63a7\u4e00\u5207\uff0c\u66f4\u6ce8\u91cd\u6548\u80fd\u548c\u5e95\u5c64\u63a7\u5236\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"\">\u53ef\u4ee5\u5275\u5efa\u4e00\u500b\u7269\u4ef6\u7684<strong>\u5be6\u9ad4\uff08Instance\uff09\u5728Stack\u4e0a\uff0c\u9019\u500b\u5be6\u9ad4\u662f\u503c\uff08Value\uff09<\/strong>\u3002\u5982\uff1a<code>MyClass obj;<\/code><\/li>\n\n\n\n<li class=\"\">\u4e5f\u53ef\u4ee5\u5275\u5efa\u4e00\u500b\u7269\u4ef6\u7684<strong>\u6307\u6a19<\/strong>\u5728<strong>Heap<\/strong>\u4e0a\u3002\u5982\uff1a<code>MyClass* ptr = new MyClass();<\/code><\/li>\n\n\n\n<li class=\"\">C++ \u63d0\u4f9b\u4e86\u5c0d\u7269\u4ef6\u751f\u547d\u9031\u671f\u7684\u5b8c\u5168\u63a7\u5236\u3002<\/li>\n<\/ul>\n\n\n\n<p class=\"\">JAVA\u7684\u8a2d\u8a08\u54f2\u5b78\u8b93\u958b\u767c\u8005\u53ea\u80fd\u5728Heap\u4e0a\u64cd\u4f5c\uff0c\u4e26\u900f\u904e<strong>\u5f15\u7528\uff08Reference\uff09<\/strong>\u4f86\u5b58\u53d6\u7269\u4ef6\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"\">\u7269\u4ef6\u672c\u8eab\u4e00\u5b9a\u5728<strong>Heap<\/strong>\u4e0a\u5206\u914d\u3002<\/li>\n\n\n\n<li class=\"\">\u8b8a\u6578\u5132\u5b58\u7684\u662f\u5c0d\u9019\u500b\u7269\u4ef6\u7684\u5f15\u7528\u3002\u4f8b\u5982\uff1a<code>MyClass obj = new MyClass();<\/code> \u9019\u88e1 <code>obj<\/code> \u662f\u4e00\u500b\u5f15\u7528\u3002<\/li>\n\n\n\n<li class=\"\">Java \u81ea\u52d5\u7ba1\u7406\u8a18\u61b6\u9ad4\uff0c\u958b\u767c\u8005\u7121\u9700\u64d4\u5fc3\u91cb\u653e\u3002<\/li>\n<\/ul>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<h4 class=\"wp-block-heading\"><strong>Inheritance and Polymorphism &#8211; Runtime Polymorphism<\/strong>\uff0c\u904b\u884c\u6642\u591a\u5f62\u8207<strong>Dynamic Binding<\/strong>\u3002<\/h4>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-code\"><code>class Animal {\npublic:\n    virtual void speak(); \/\/ virtual \u6c7a\u5b9a\u662f\u5426\u52d5\u614b\u7e6b\u7d50(<strong>Dynamic Binding<\/strong>)\n};\n\nclass Dog : public Animal {\npublic:\n    void speak() override; \/\/ \u5f37\u5236\u7de8\u8b6f\u5668\u6aa2\u67e5\u5b50\u985e\u5225\u7684\u65b9\u6cd5\u662f\u5426\u78ba\u5be6\u8986\u5beb\u4e86\u7236\u985e\u5225\u7684\u865b\u64ec\u65b9\u6cd5\n};<\/code><\/pre>\n\n\n\n<p class=\"\">\u7576\u7236\u985e\u5225\u7684\u65b9\u6cd5\u88ab\u6a19\u8a18\u70ba <code>virtual<\/code> \u6642\uff0c\u7de8\u8b6f\u5668\u5c31\u6703\u70ba\u8a72\u985e\u5225\u7684\u7269\u4ef6\u5275\u5efa\u4e00\u500b<strong>\u865b\u64ec\u51fd\u5f0f\u8868 (vtable)<\/strong>\u3002\u7cfb\u7d71\u6703\u5728\u904b\u884c\u6642\u67e5\u8a62 vtable\uff0c\u6839\u64da\u5be6\u969b\u6307\u5411\u7684\u7269\u4ef6\u985e\u578b\uff08\u4f8b\u5982 <code>Dog<\/code>\uff09\uff0c\u4f86\u6c7a\u5b9a\u57f7\u884c\u54ea\u4e00\u500b\u7248\u672c\u7684\u65b9\u6cd5\uff0c\u7a31\u4f5c<strong>\u52d5\u614b\u7e6b\u7d50 (Dynamic Binding)<\/strong><\/p>\n\n\n\n<hr class=\"is-style-wide wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<h4 class=\"wp-block-heading\">Abstraction &#8211; Pure Virtual Function\uff0c\u7d14\u865b\u64ec\u51fd\u5f0f\uff0c\u4e0d\u80fd<strong>\u88ab\u5be6\u4f5c<\/strong>\uff08<code>new Shape()<\/code>\uff09\u3002<\/h4>\n<\/blockquote>\n\n\n\n<p class=\"\">\u57fa\u65bc\u5b83\u4e0d\u80fd\u88ab\u5be6\u4f5c\uff0c\u5b83\u7684\u552f\u4e00\u76ee\u7684\u662f\u4f5c\u70ba<strong>\u4ecb\u9762\u6216\u5951\u7d04<\/strong>: \u4efb\u4f55\u7e7c\u627f\u81ea <code>Shape<\/code> \u7684\u5b50\u985e\u5225\uff08\u9664\u975e\u5b83\u81ea\u5df1\u4e5f\u662f\u62bd\u8c61\u985e\u5225\uff09<strong>\u5fc5\u9808<\/strong>\u5be6\u73fe\uff08\u8986\u5beb\uff09<code>area()<\/code> \u65b9\u6cd5\uff0c\u5426\u5247\u7de8\u8b6f\u5668\u6703\u5831\u932f\uff0c\u5f9e\u800c\u5f37\u5236\u4e86\u62bd\u8c61\u5951\u7d04\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Shape {\npublic:\n    virtual double area() = 0; \/\/ \u7d14\u865b\u64ec\u51fd\u5f0f\n};<\/code><\/pre>\n\n\n\n<p class=\"\"><strong><code>= 0<\/code>\uff1a<\/strong> \u9019\u662f C++ \u4e2d\u5b9a\u7fa9<strong>\u7d14\u865b\u64ec\u51fd\u5f0f (Pure Virtual Function)<\/strong> \u7684\u8a9e\u6cd5\uff0c\u4e00\u500b\u5305\u542b\u7d14\u865b\u64ec\u51fd\u5f0f\u7684\u985e\u5225\u88ab\u7a31\u70ba<strong>\u62bd\u8c61\u985e\u5225 (Abstract Class)<\/strong>\u3002<\/p>\n\n\n\n<hr class=\"is-style-wide wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<h3 class=\"wp-block-heading\">Object Lifetime &#8211; Steak &amp; Heap<\/h3>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-code\"><code>Dog d;             \/\/ stack (\u68e7)\nDog* p = new Dog(); \/\/ heap (\u5806)\ndelete p;<\/code><\/pre>\n\n\n\n<p class=\"\"><strong>\u68e7 (Stack) \u4e0a\u7684\u7269\u4ef6 (<code>Dog d;<\/code>)\uff1a<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"\"><strong>\u512a\u9ede\uff1a<\/strong> \u8a18\u61b6\u9ad4\u5206\u914d\u548c\u91cb\u653e\u6975\u5feb\u3002<\/li>\n\n\n\n<li class=\"\"><strong>\u751f\u547d\u9031\u671f\uff1a<\/strong> \u56b4\u683c\u9075\u5faa\u4f5c\u7528\u57df\u898f\u5247\uff08Scope\uff09\uff0c\u7576\u7a0b\u5f0f\u78bc\u57f7\u884c\u96e2\u958b <code>d<\/code> \u5b9a\u7fa9\u7684\u5340\u584a\u6642\uff0c<code>d<\/code> \u6703<strong>\u81ea\u52d5\u92b7\u6bc0<\/strong>\uff08\u547c\u53eb\u89e3\u69cb\u51fd\u5f0f <code>~Dog()<\/code>\uff09\uff0c\u8a18\u61b6\u9ad4\u81ea\u52d5\u91cb\u653e\u3002<\/li>\n<\/ul>\n\n\n\n<p class=\"\"><strong>\u5806 (Heap) \u4e0a\u7684\u7269\u4ef6 (<code>Dog* p = new Dog();<\/code>)\uff1a<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"\"><strong>\u512a\u9ede\uff1a<\/strong> \u8a18\u61b6\u9ad4\u53ef\u4ee5\u5728\u7a0b\u5f0f\u7684\u4efb\u4f55\u5730\u65b9\u5b58\u53d6\uff0c\u751f\u547d\u9031\u671f\u53ef\u4ee5\u7531\u958b\u767c\u8005\u63a7\u5236\u3002<\/li>\n\n\n\n<li class=\"\"><strong>\u98a8\u96aa\uff1a<\/strong> \u5fc5\u9808\u624b\u52d5\u4f7f\u7528 <strong><code>delete p;<\/code><\/strong> \u9032\u884c\u91cb\u653e\uff0c\u5426\u5247\u6703\u5c0e\u81f4<strong>\u8a18\u61b6\u9ad4\u6d29\u6f0f (Memory Leak)<\/strong>\u3002<\/li>\n<\/ul>\n\n\n\n<hr class=\"is-style-wide wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u5fc3\u5f97<\/h1>\n\n\n\n<p class=\"\">\u5929\u554a\uff0c\u6211\u4e5f\u6c92\u60f3\u5230\u6211\u80fd\u5beb\u5b8c\u9019\u9ebc\u9577\u4e00\u5927\u7bc7\uff0c\u96d6\u7136\u6709AI\u5354\u4f5c\uff0c\u4f46\u6211\u4e5f\u5c07AI\u7d66\u7684\u751f\u786c\u7684\u5b57\u8a5e\uff0c\u8f49\u5316\u70ba\u6211\u81ea\u8a8d\u70ba\u7b97\u53e3\u8a9e\u7684\u8aaa\u6cd5\u4e86<s>(\u53cd\u6b63\u6211\u81ea\u5df1\u662f\u770b\u5f97\u61c2)<\/s>\u3002<\/p>\n\n\n\n<p class=\"\">\u6703\u60f3\u8981\u5beb\u9019\u7bc7\u5c0f\u5831\u544a(\u5c0f\u8ad6\u6587??)\u7684\u8d77\u56e0\u662f\u6211\u5728\u81ea\u5b78\u5f8c\u7aef\u7684\u6642\u5019\uff0c\u5b78\u5230springBoot\u7684\u8a2d\u8a08\u54f2\u5b78\uff0c\u6574\u500b\u6846\u67b6\u7684\u8a2d\u8a08\u54f2\u5b78\u6642\uff0c\u8b80\u5230\u4e86\u7269\u4ef6\u5c0e\u5411\u9019\u4ef6\u4e8b\uff0c\u6211\u5c31\u7a81\u7136\u8166\u4e2d\u5192\u51fa\u4e00\u500b\u8072\u97f3\u554f\u6211\u81ea\u5df1: <strong>\u4f60\u77e5\u9053\u8981\u5982\u4f55\u5b9a\u7fa9\u4f60\u6703\u7684\u56db\u500b\u8a9e\u8a00\u4e2d\u7684&#8221;\u7269\u4ef6&#8221;\u662f\u4ec0\u9ebc\u55ce?<\/strong><\/p>\n\n\n\n<p class=\"\">\u6211\u624d\u7a81\u7136\u5bdf\u89ba\uff0c\u5c0d\u311f\uff0c\u6211\u5b78\u4e86\u9019\u9ebc\u591a\u8a9e\u8a00\uff0c\u6bcf\u500b\u8a9e\u8a00\u7684\u6559\u79d1\u66f8\u90fd\u6709\u63d0\u5230\u7269\u4ef6\u9019\u4ef6\u4e8b\uff0c\u4f46\u662f\u8001\u5be6\u8b1b\u6211\u5b8c\u5168\u4e0d\u77e5\u9053\u9019\u4e9b\u8a9e\u8a00\u4e2d\u7684\u7269\u4ef6\u5206\u5225\u662f\u4ec0\u9ebc\u610f\u601d\uff0c\u66f4\u4f55\u6cc1\u7269\u4ef6\u5c0e\u5411\u662f\u4ec0\u9ebc\u610f\u601d\u3002<\/p>\n\n\n\n<p class=\"\">\u6240\u4ee5\u5c31\u9019\u6a23\uff0c\u6211\u99ac\u4e0a\u53bb\u554fGPT : \u5982\u4f55\u5b9a\u7fa9Java, python, js, c++\u4e2d\u7684<strong>&#8220;\u7269\u4ef6&#8221;<\/strong>\uff0c\u518d\u7e7c\u7e8c\u4e86\u89e3\u5230\u6574\u500b\u7269\u4ef6\u5c0e\u5411\u3002<\/p>\n\n\n\n<p class=\"\">\u8aaa\u771f\u7684\uff0c\u6574\u500b\u7de8\u5beb\u904e\u7a0b\u4e0b\u4f86\uff0c\u771f\u7684\u5b78\u5230\u5f88\u591a\uff0c\u5149\u662fJAVA\u3001C++\u7684\u8a2d\u8a08\u54f2\u5b78\u8207Python\u7684\u904b\u4f5c\u539f\u7406\u5c31\u5b78\u5230\u5f88\u591a\u4e86\uff0c\u5b8c\u5168\u6c92\u60f3\u5230\u7adf\u7136\u4e5f\u80fd\u5b78\u5230\u524d\u7aefinterface\u8207type\u5169\u7a2e\u5ba3\u544adata\u7684\u65b9\u5f0f\u5230\u5e95\u5dee\u7570\u5728\u54ea\u88e1(\u5c31\u662f\u5dee\u7570\u5728interface\u624d\u662f\u7269\u4ef6\u5c0e\u5411\u7684\u591a\u5f62\u6700\u4f73\u5be6\u4f5c\u65b9\u5f0f\uff0c\u6240\u4ee5\u7528interface)\u3002<\/p>\n\n\n\n<p class=\"\">\u73fe\u5728AI\u771f\u7684\u592a\u767c\u9054\u4e86\uff0c\u6211\u4e5f\u662f\u5beb\u5b8c\u624d\u767c\u73fe\uff0c\u5c0d\u311f\u9019\u6a23\u4e5f\u7b97\u662f\u4e00\u7a2e\u73fe\u4ee3\u4eba\u5c08\u5c6c\u7684\u5b78\u7fd2\u65b9\u5f0f\uff0c\u771f\u7684\u5f88\u6176\u5e78\u81ea\u5df1\u51fa\u751f\u5728\u9019\u500b\u6642\u4ee3\uff0c10\u5e7e\u5e74\u524d\uff0c\u5982\u679c\u8981\u4e00\u6b21\u641e\u61c2\u9019\u56db\u500b\u8a9e\u8a00\u7684&#8221;\u7269\u4ef6\u5c0e\u5411&#8221;\u5dee\u7570\uff0c\u53ef\u80fd\u771f\u7684\u8981\u5beb\u4e00\u7bc7\u8ad6\u6587\uff0c\u67e5\u95b1\u8d85\u591a\u8cc7\u6599\u624d\u80fd\u5b8c\u6210\u4e86\uff0c\u4f46\u662f\u73fe\u5728\uff0c\u6211\u53ea\u7528\u4e86\u5169\u5929\uff0c\u5169\u500bAI\uff0c\u5c31\u80fd\u5b8c\u621010\u5e7e\u5e74\u524d\u770b\u4f3c\u8d85\u56f0\u96e3\u7684\u5b78\u7fd2!!!<\/p>\n\n\n\n<p class=\"\">\u800c\u4e14\u5beb\u5b8c\u6eff\u6eff\u4e00\u7bc7(\u96d6\u7136\u7a0b\u5f0f\u78bc\u5927\u90e8\u5206\u662fAI\u5beb\u7684)\u6210\u5c31\u611f\u771f\u7684\u5f88\u9ad8\uff0c\u900f\u904e\u7406\u89e3AI\u7684\u7a0b\u5f0f\u78bc\u4f86\u5b78\u7fd2\uff0c\u4e0d\u61c2\u5c31\u554f\u4ed6\uff0c\u7562\u7adf\u662f\u4ed6\u751f\u6210\u7684\u7a0b\u5f0f\u78bc\u3002\u9019\u7a2e\u5b78\u7fd2\u65b9\u5f0f\u771f\u7684\u5f88\u6709\u6548\u7387\u3002<\/p>\n\n\n\n<p class=\"\">\u63a5\u4e0b\u4f86\uff0c\u5c31\u4f86\u7528\u9019\u7a2e\u5b78\u7fd2\u65b9\u5f0f\u9010\u6f38\u53bb\u7cbe\u9032\u524d\u7aef\u548c\u5f8c\u7aef\uff0c\u751a\u81f3\u8cc7\u6599\u5eab\u8207\u7cfb\u7d71\u7db2\u8def\u898f\u5283\u7b49\u5c08\u696d\u4e86!!(\u4f46\u674e\u8463\u5efa\u8b70\u6211\u53ef\u4ee5\u671dAI\u65b9\u5411\uff0c\u4e0d\u904e\u90a3\u611f\u89ba\u6709\u9ede\u592a\u96e3\uff0c\u6211\u5b78\u591a\u4e00\u9ede\u6771\u897f\u518d\u8e0f\u9032AI\u597d\u4e86)<\/p>\n\n\n\n<p class=\"\">\u771f\u7684\u662f\u5b78\u7fd2\u4f7f\u6211\u5feb\u6a02\u9912ww\uff0c\u6211\u6709\u4fe1\u5fc3\u63a5\u4e0b\u4f86\u6709\u4eba\u554f\u6211\u7269\u4ef6\u5c0e\u5411\u7684\u554f\u984c\uff0c\u6211\u61c9\u8a72\u90fd\u80fd\u56de\u7b54\u5f97\u51fa\u4f86\u4e86(\u61c9\u8a72)!!!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5728\u5b78\u7fd2\u6bcf\u500b\u8a9e\u8a00\u6642\uff0c\u90fd\u4e00\u6703\u5b78\u5230\u6bcf\u500b\u8a9e\u8a00\u7684 &#8220;\u7269\u4ef6&#8221;\uff0c\u4f46\u96a8\u8457\u5b78\u7fd2\u7684\u8a9e\u8a00\u8d8a\u4f86\u8d8a\u591a\uff0c\u6211\u4e5f\u6f38\u6f38\u7684\u958b\u59cb\u6df7\u6dc6\u4e86\u3002 \u9019\u7bc7\u6587\u7ae0\u5c31\u4f86\u6df1\u5ea6\u63a2\u8a0e\u4e00\u4e0b\u7269\u4ef6\u5c0e\u5411(OOP) \u5728 Java, Python, JS, C++\u4e2d\u7684\u8a6e\u91cb \u3002 (\u672c\u7bc7\u6587\u7ae0\u975eJava, [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[20],"tags":[],"class_list":["post-141","post","type-post","status-publish","format-standard","hentry","category-algorithm"],"_links":{"self":[{"href":"https:\/\/hyc.eshachem.com\/program\/wp-json\/wp\/v2\/posts\/141","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hyc.eshachem.com\/program\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hyc.eshachem.com\/program\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hyc.eshachem.com\/program\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/hyc.eshachem.com\/program\/wp-json\/wp\/v2\/comments?post=141"}],"version-history":[{"count":18,"href":"https:\/\/hyc.eshachem.com\/program\/wp-json\/wp\/v2\/posts\/141\/revisions"}],"predecessor-version":[{"id":179,"href":"https:\/\/hyc.eshachem.com\/program\/wp-json\/wp\/v2\/posts\/141\/revisions\/179"}],"wp:attachment":[{"href":"https:\/\/hyc.eshachem.com\/program\/wp-json\/wp\/v2\/media?parent=141"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hyc.eshachem.com\/program\/wp-json\/wp\/v2\/categories?post=141"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hyc.eshachem.com\/program\/wp-json\/wp\/v2\/tags?post=141"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}