{"id":594,"date":"2026-06-15T09:05:20","date_gmt":"2026-06-15T09:05:20","guid":{"rendered":"https:\/\/hyc.eshachem.com\/program\/?page_id=594"},"modified":"2026-06-15T09:05:58","modified_gmt":"2026-06-15T09:05:58","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":"page","link":"https:\/\/hyc.eshachem.com\/program\/technical-articles\/%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=\"wp-block-paragraph\">\u5728\u5b78\u7fd2\u6bcf\u500b\u8a9e\u8a00\u6642\uff0c\u90fd\u4e00\u6703\u5b78\u5230\u6bcf\u500b\u8a9e\u8a00\u7684 \u201c\u7269\u4ef6\u201d\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=\"wp-block-paragraph\">\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 wp-block-paragraph\">(\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=\"wp-block-separator has-alpha-channel-opacity is-style-wide\">\n\n\n\n<p class=\"wp-block-paragraph\">\u8981\u4e86\u89e3\u7269\u4ef6\u5c0e\u5411\u6211\u5011\u9700\u8981\u5148\u4f86\u91d0\u6e05<strong>\u201c\u7269\u4ef6\u201d<\/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\" id=\"what-is-object\">What is OBJECT ?<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u7e3d\u7d50: object = interface\/attributes \uff0b method\/function<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"java%ef%bc%9aclass-based-object\">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=\"wp-block-paragraph\">\u7269\u4ef6\u662f<strong>\u985e\u5225 (Class)<\/strong> \u7684<strong>\u5be6\u4f8b (Instance)<\/strong>\u3002<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">\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<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Person<\/span> <\/span>{\n  <span class=\"hljs-built_in\">String<\/span> name;\n  <span class=\"hljs-keyword\">void<\/span> sayHello() {\n    System.out.println(<span class=\"hljs-string\">\"Hi\"<\/span>);\n  }\n}\nPerson p = <span class=\"hljs-keyword\">new<\/span> Person(); <span class=\"hljs-comment\">\/\/ p \u662f\u7269\u4ef6<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\" id=\"python%ef%bc%9aeverything-is-an-object\">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=\"wp-block-paragraph\">\u842c\u7269\u7686\u7269\u4ef6\u3002<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">\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<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">x = <span class=\"hljs-number\">10<\/span>\n<span class=\"hljs-keyword\">print<\/span>(type(x))  <span class=\"hljs-comment\"># &lt;class 'int'&gt;<\/span>\n\ndef foo():\n    pass\n\n<span class=\"hljs-keyword\">print<\/span>(type(foo))  <span class=\"hljs-comment\"># &lt;class 'function'&gt;<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">\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<pre class=\"wp-block-code\"><span><code class=\"hljs\">p.age = 20<\/code><\/span><\/pre>\n\n\n<h2 class=\"wp-block-heading\" id=\"javascript%ef%bc%9aprototype-based-object-oriented\">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=\"wp-block-paragraph\">\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=\"wp-block-paragraph\">\u7269\u4ef6\u662fJS\u8a9e\u8a00\u7684\u6838\u5fc3\uff0c\u7e7c\u627f\u9760 prototype chain<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-keyword\">const<\/span> person = {\n  <span class=\"hljs-attr\">name<\/span>: <span class=\"hljs-string\">\"Tom\"<\/span>,\n  sayHello() {\n    <span class=\"hljs-built_in\">console<\/span>.log(<span class=\"hljs-string\">\"Hi\"<\/span>);\n  }\n};\nPrototype \u6a5f\u5236\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">Person<\/span>(<span class=\"hljs-params\">name<\/span>) <\/span>{\n  <span class=\"hljs-keyword\">this<\/span>.name = name;\n}\n\nPerson.prototype.sayHello = <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> (<span class=\"hljs-params\"><\/span>) <\/span>{\n  <span class=\"hljs-built_in\">console<\/span>.log(<span class=\"hljs-string\">\"Hi\"<\/span>);\n};\n\n<span class=\"hljs-keyword\">const<\/span> p = <span class=\"hljs-keyword\">new<\/span> Person(<span class=\"hljs-string\">\"Tom\"<\/span>);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\" id=\"c%ef%bc%9aobject-memory-layout\">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=\"wp-block-paragraph\">\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=\"wp-block-paragraph\">\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<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Person<\/span> <\/span>{\n<span class=\"hljs-attr\">public<\/span>:\n    string name;\n    <span class=\"hljs-keyword\">void<\/span> sayHello() {\n        cout &lt;&lt; <span class=\"hljs-string\">\"Hi\"<\/span>;\n    }\n};\n\nPerson p;        <span class=\"hljs-comment\">\/\/ stack object<\/span>\nPerson* ptr = <span class=\"hljs-keyword\">new<\/span> Person();  <span class=\"hljs-comment\">\/\/ heap object<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">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\" id=\"stack-object\">Stack Object<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">code<\/span>&gt;<\/span>Person p;<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">code<\/span>&gt;<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u5b9a\u7fa9\u8207\u884c\u70ba\uff1a<\/strong>\n<ul class=\"wp-block-list\">\n<li><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><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><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><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><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\" id=\"heap-object\">Heap Object<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\">P<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">span<\/span> <span class=\"hljs-attr\">style<\/span>=<span class=\"hljs-string\">\"background-color: initial; font-family: inherit; font-size: inherit; text-align: initial; color: initial;\"<\/span>&gt;<\/span>erson* ptr = new Person();<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">span<\/span>&gt;<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u5b9a\u7fa9\u8207\u884c\u70ba\uff1a<\/strong>\n<ul class=\"wp-block-list\">\n<li><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><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><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><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><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=\"wp-block-paragraph\">\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=\"wp-block-separator has-alpha-channel-opacity is-style-wide\">\n\n\n\n<h1 class=\"wp-block-heading\" id=\"object-oriented-programming\">Object-Oriented Programming<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\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>\u5c01\u88dd\uff08Encapsulation\uff09<\/li>\n\n\n\n<li>\u7e7c\u627f\uff08Inheritance\uff09<\/li>\n\n\n\n<li>\u591a\u578b\uff08Polymorphism\uff09<\/li>\n\n\n\n<li>\u62bd\u8c61\uff08Abstraction\uff09<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\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=\"wp-block-separator has-alpha-channel-opacity is-style-wide\">\n\n\n\n<h2 class=\"wp-block-heading\" id=\"java%ef%bc%9a%e6%95%99%e7%a7%91%e6%9b%b8%e7%b4%9a%e7%9a%84%e7%89%a9%e4%bb%b6%e5%b0%8e%e5%90%91\">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 \u2013 Modifier<\/strong>\uff0c \u900f\u904e\u4fee\u98fe\u5b50\u4f86\u5b8c\u6210\u5c01\u88dd<\/h4>\n<\/blockquote>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">User<\/span> <\/span>{\n    private <span class=\"hljs-built_in\">String<\/span> name;\n\n    public <span class=\"hljs-built_in\">String<\/span> getName() {\n        <span class=\"hljs-keyword\">return<\/span> name;\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\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=\"wp-block-separator has-alpha-channel-opacity is-style-wide\">\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> \u2013 <strong>is-a<\/strong>\u3002\u8868\u662f: \u2026\u662f\u4e00\u7a2e\u2026 \u7684\u6982\u5ff5\u3002<\/h4>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\"><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<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-8\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Animal<\/span> <\/span>{\n    <span class=\"hljs-keyword\">void<\/span> speak() {}\n}\n\n<span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Dog<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">Animal<\/span> <\/span>{\n    @Override\n    <span class=\"hljs-keyword\">void<\/span> speak() {\n        System.out.println(<span class=\"hljs-string\">\"Woof\"<\/span>);\n    }\n}\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-8\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<ul class=\"wp-block-list\">\n<li><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><code>final<\/code> \u53ef\u963b\u6b62\u5b50\u985e\u5225\u7684\u7e7c\u627f<\/li>\n\n\n\n<li><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=\"wp-block-separator has-alpha-channel-opacity is-style-wide\">\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> \u2013 <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=\"wp-block-paragraph\">\u6211\u5011\u5f9e<strong>Inheritance<\/strong> \u90a3\u6b04\u7684\u7a0b\u5f0f\u78bc\u7e7c\u7e8c\u5f80\u4e0b\u770b:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-9\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">Animal a = <span class=\"hljs-keyword\">new<\/span> Dog();\na.speak();  <span class=\"hljs-comment\">\/\/ \u8f38\u51fa: Woof<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-9\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">\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><strong>\u767c\u751f\u7684\u4e8b\u60c5\uff1a<\/strong>\n<ul class=\"wp-block-list\">\n<li>\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>\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>\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><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=\"wp-block-separator has-alpha-channel-opacity is-style-wide\">\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 \u2013 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=\"wp-block-paragraph\">\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><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<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-10\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-comment\">\/**\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 *\/<\/span>\n<span class=\"hljs-keyword\">abstract<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Shape<\/span> <\/span>{\n\n    <span class=\"hljs-keyword\">protected<\/span> double length; \n    <span class=\"hljs-keyword\">protected<\/span> double width; \n    <span class=\"hljs-keyword\">protected<\/span> double height;\n\n    <span class=\"hljs-comment\">\/**\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     *\/<\/span>\n    <span class=\"hljs-keyword\">public<\/span> Shape(double length, double width, double height) {\n        this.length = length;\n        this.width = width;\n        this.height = height;\n    }\n\n    <span class=\"hljs-comment\">\/\/ \u62bd\u8c61\u65b9\u6cd5 (Abstract Method) - \u5fc5\u9808\u7531\u5b50\u985e\u5225\u5ba2\u88fd\u5316\u5be6\u73fe\u7684\u5951\u7d04<\/span>\n\n    <span class=\"hljs-comment\">\/**\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     * <span class=\"hljs-doctag\">@return<\/span> \u8a72\u5f62\u72c0\u7684\u9762\u7a4d (double)\n     *\/<\/span>\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">abstract<\/span> double area();\n\n    <span class=\"hljs-comment\">\/\/ \u5177\u9ad4\u65b9\u6cd5 (Concrete Method) - \u5171\u7528\u7684\u65b9\u6cd5\u5be6\u73fe<\/span>\n\n    <span class=\"hljs-comment\">\/**\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     * <span class=\"hljs-doctag\">@return<\/span> \u5f62\u72c0\u7684\u5c3a\u5bf8\u63cf\u8ff0\u5b57\u4e32\n     *\/<\/span>\n    <span class=\"hljs-keyword\">public<\/span> String getDimensions() {\n        <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-string\">\"\u5c3a\u5bf8: \u9577=\"<\/span> + length + <span class=\"hljs-string\">\", \u5bec=\"<\/span> + width + <span class=\"hljs-string\">\", \u9ad8=\"<\/span> + height;\n    }\n\n    <span class=\"hljs-comment\">\/**\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     *\/<\/span>\n    <span class=\"hljs-keyword\">public<\/span> void displayInfo() {\n        System.out.println(<span class=\"hljs-string\">\"--- \u5f62\u72c0\u8cc7\u8a0a ---\"<\/span>);\n        System.out.println(getDimensions());\n        <span class=\"hljs-comment\">\/\/ \u547c\u53eb\u62bd\u8c61\u65b9\u6cd5 (\u5728\u5b50\u985e\u5225\u4e2d\u5be6\u73fe\u7684\u908f\u8f2f)<\/span>\n        System.out.println(<span class=\"hljs-string\">\"\u8a08\u7b97\u9762\u7a4d: \"<\/span> + area()); \n        System.out.println(<span class=\"hljs-string\">\"-----------------\"<\/span>);\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-10\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">\u900f\u904e\u7e7c\u627f\u4f86\u5be6\u73feShape \u62bd\u8c61\u985e\u5225\u3002<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-11\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Rectangle<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">Shape<\/span> <\/span>{\n\n    <span class=\"hljs-comment\">\/\/ \u9577\u65b9\u5f62\u53ea\u9700\u8981\u9577\u548c\u5bec\uff0c\u9ad8\u8a2d\u70ba 0<\/span>\n    <span class=\"hljs-keyword\">public<\/span> Rectangle(double length, double width) {\n        <span class=\"hljs-comment\">\/\/ \u547c\u53eb\u7236\u985e (Shape) \u7684\u5efa\u69cb\u51fd\u5f0f\u4f86\u521d\u59cb\u5316\u901a\u7528\u5c6c\u6027<\/span>\n        super(length, width, <span class=\"hljs-number\">0<\/span>); \n    }\n\n    <span class=\"hljs-comment\">\/\/ \u5be6\u73fe\u62bd\u8c61\u65b9\u6cd5 (Fulfilling the Contract)<\/span>\n\n    <span class=\"hljs-comment\">\/**\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     * <span class=\"hljs-doctag\">@Override<\/span> \u8a3b\u89e3\u7528\u65bc\u78ba\u4fdd\u6b63\u78ba\u8986\u5beb\u3002\n     *\/<\/span>\n    @Override\n    <span class=\"hljs-keyword\">public<\/span> double area() {\n        <span class=\"hljs-comment\">\/\/ \u63d0\u4f9b\u9577\u65b9\u5f62\u7279\u6709\u7684\u9762\u7a4d\u8a08\u7b97\u908f\u8f2f<\/span>\n        <span class=\"hljs-keyword\">return<\/span> length * width;\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-11\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">\u5be6\u969b\u904b\u884c\u770b\u770b<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-12\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-comment\">\/\/ \u6e2c\u8a66\u7a0b\u5f0f<\/span>\npublic <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">AbstractionTest<\/span> <\/span>{\n    public <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">void<\/span> main(<span class=\"hljs-built_in\">String<\/span>[] args) {\n        <span class=\"hljs-comment\">\/\/ Shape \u62bd\u8c61\u985e\u5225\u4e0d\u80fd\u88ab\u5be6\u4f8b\u5316\uff1aShape s = new Shape(10, 5, 0); \/\/ \u932f\u8aa4\uff01<\/span>\n\n        <span class=\"hljs-comment\">\/\/ \u5be6\u4f8b\u5316\u5177\u9ad4\u5b50\u985e\u5225<\/span>\n        Rectangle rect = <span class=\"hljs-keyword\">new<\/span> Rectangle(<span class=\"hljs-number\">10.0<\/span>, <span class=\"hljs-number\">5.0<\/span>);\n\n        <span class=\"hljs-comment\">\/\/ \u900f\u904e\u591a\u578b\u5f15\u7528 (Polymorphic Reference) \u5b58\u53d6<\/span>\n        Shape shapeRef = rect; \n\n        <span class=\"hljs-comment\">\/\/ \u547c\u53eb\u5177\u9ad4\u65b9\u6cd5 (\u5f9e Shape \u7e7c\u627f)<\/span>\n        shapeRef.displayInfo();\n        \n        <span class=\"hljs-comment\">\/\/ \u9810\u671f\u8f38\u51fa\uff1a<\/span>\n        <span class=\"hljs-comment\">\/\/ --- \u5f62\u72c0\u8cc7\u8a0a ---<\/span>\n        <span class=\"hljs-comment\">\/\/ \u5c3a\u5bf8: \u9577=10.0, \u5bec=5.0, \u9ad8=0.0<\/span>\n        <span class=\"hljs-comment\">\/\/ \u8a08\u7b97\u9762\u7a4d: 50.0 <\/span>\n        <span class=\"hljs-comment\">\/\/ -----------------<\/span>\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-12\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\">\n\n\n\n<h2 class=\"wp-block-heading\" id=\"python%ef%bc%9a%e7%89%a9%e4%bb%b6%e5%b0%8e%e5%90%91%e5%8f%aa%e6%98%af%e3%80%8c%e5%b7%a5%e5%85%b7%e3%80%8d\">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 \u2013 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\u201d\u7d04\u5b9a\u201d\u4f86\u544a\u77e5\u5176\u4ed6\u958b\u767c\u8005\u3002<\/h4>\n<\/blockquote>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">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><\/span><\/pre>\n\n\n<ul class=\"wp-block-list\">\n<li>\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><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>\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>\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>\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>\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>\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>\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\" id=\"property\">Property<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\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=\"wp-block-paragraph\">\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<pre class=\"wp-block-code\"><span><code class=\"hljs\">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><\/span><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\">\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 \u2013 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<pre class=\"wp-block-code\"><span><code class=\"hljs\">class Flyable:\n    def fly(self): pass\n\nclass Bat(Animal, Flyable): # Bat \u540c\u6642\u7e7c\u627f\u81ea Animal \u548c Flyable\n    pass<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\">\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=\"wp-block-paragraph\">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><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><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<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-13\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"># \u7bc4\u4f8b\uff1a\n<span class=\"hljs-selector-tag\">class<\/span> <span class=\"hljs-selector-tag\">Base<\/span>: <span class=\"hljs-selector-tag\">pass<\/span>\n<span class=\"hljs-selector-tag\">class<\/span> <span class=\"hljs-selector-tag\">A<\/span>(<span class=\"hljs-selector-tag\">Base<\/span>): <span class=\"hljs-selector-tag\">pass<\/span>\n<span class=\"hljs-selector-tag\">class<\/span> <span class=\"hljs-selector-tag\">B<\/span>(<span class=\"hljs-selector-tag\">Base<\/span>): <span class=\"hljs-selector-tag\">pass<\/span>\n<span class=\"hljs-selector-tag\">class<\/span> <span class=\"hljs-selector-tag\">C<\/span>(<span class=\"hljs-selector-tag\">A<\/span>, <span class=\"hljs-selector-tag\">B<\/span>): <span class=\"hljs-selector-tag\">pass<\/span>\n\n<span class=\"hljs-selector-tag\">print<\/span>(<span class=\"hljs-selector-tag\">C<\/span><span class=\"hljs-selector-class\">.mro<\/span>())\n# \u8f38\u51fa: <span class=\"hljs-selector-attr\">[&lt;class <span class=\"hljs-string\">'C'<\/span>&gt;, &lt;class <span class=\"hljs-string\">'A'<\/span>&gt;, &lt;class <span class=\"hljs-string\">'B'<\/span>&gt;, &lt;class <span class=\"hljs-string\">'Base'<\/span>&gt;, &lt;class <span class=\"hljs-string\">'object'<\/span>&gt;]<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-13\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\">\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 \u2013 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=\"wp-block-paragraph\"><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\u2019s a duck.\uff09<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-14\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">def make_sound(animal):\n    <span class=\"hljs-comment\"># Python \u5728\u7de8\u8b6f\u671f\u4e0d\u77e5\u9053 animal \u662f\u4ec0\u9ebc\u578b\u5225<\/span>\n    <span class=\"hljs-comment\"># \u5b83\u53ea\u77e5\u9053\u5728\u904b\u884c\u6642\uff0c\u5b83\u9700\u8981 animal \u6709\u4e00\u500b speak() \u65b9\u6cd5<\/span>\n    animal.speak()<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-14\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<ul class=\"wp-block-list\">\n<li><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><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><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><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><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=\"wp-block-separator has-alpha-channel-opacity is-style-wide\">\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 \u2013 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<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-15\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">from<\/span> <span class=\"hljs-selector-tag\">abc<\/span> <span class=\"hljs-selector-tag\">import<\/span> <span class=\"hljs-selector-tag\">ABC<\/span>, <span class=\"hljs-selector-tag\">abstractmethod<\/span>\n\n<span class=\"hljs-selector-tag\">class<\/span> <span class=\"hljs-selector-tag\">Shape<\/span>(<span class=\"hljs-selector-tag\">ABC<\/span>):    \n    <span class=\"hljs-keyword\">@abstractmethod<\/span>\n    def area(self):\n        pass<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-15\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><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><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><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>\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=\"wp-block-paragraph\"><strong>Python \u4e0d\u5f37\u5236\u62bd\u8c61<\/strong>!<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><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><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=\"wp-block-separator has-alpha-channel-opacity is-style-wide\">\n\n\n\n<h2 class=\"wp-block-heading\" id=\"javascript%ef%bc%9a%e7%89%a9%e4%bb%b6%e5%b0%8e%e5%90%91-%e2%89%a0-class\">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=\"wp-block-paragraph\"><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=\"wp-block-paragraph\">\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<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-16\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-keyword\">const<\/span> user = {\n  <span class=\"hljs-attr\">name<\/span>: <span class=\"hljs-string\">\"Tom\"<\/span>,\n  getName() {\n    <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-keyword\">this<\/span>.name;\n  }\n};<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-16\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">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=\"wp-block-paragraph\">\u6240\u6709\u7684\u5b58\u53d6\u5168\u90fd\u662fpublic\u7684\uff0c\u76f4\u5230ES11\u624d\u5f15\u5165\u4e86private\u7684\u5beb\u6cd5:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-17\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">User<\/span> <\/span>{\n  <span class=\"hljs-comment\">#id = 123; \/\/ \u79c1\u6709\u5c6c\u6027<\/span>\n\n  constructor(name) {\n    this.name = name;\n  }\n\n  getId() {\n    <span class=\"hljs-keyword\">return<\/span> this.<span class=\"hljs-comment\">#id; \/\/ \u53ea\u80fd\u5728\u985e\u5225\u5167\u90e8\u5b58\u53d6<\/span>\n  }\n}\n\n<span class=\"hljs-keyword\">const<\/span> user2 = <span class=\"hljs-keyword\">new<\/span> User(<span class=\"hljs-string\">\"Jane\"<\/span>);\n<span class=\"hljs-comment\">\/\/ user2.#id; \/\/ \u932f\u8aa4\uff0c\u7121\u6cd5\u5728\u5916\u90e8\u5b58\u53d6<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-17\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\">\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 \u2013 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=\"wp-block-paragraph\">\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<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-18\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">Animal<\/span>(<span class=\"hljs-params\"><\/span>) <\/span>{ <span class=\"hljs-comment\">\/\/ \u5efa\u69cb\u51fd\u5f0f (Constructor Function) &amp; \u5efa\u7acb\u985e\u5225(Class)<\/span>\n    <span class=\"hljs-keyword\">this<\/span>.name = <span class=\"hljs-string\">\"Instance Name\"<\/span>;\n}\n\nAnimal.prototype.speak = <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> (<span class=\"hljs-params\"><\/span>) <\/span>{\n    <span class=\"hljs-built_in\">console<\/span>.log(<span class=\"hljs-string\">`<span class=\"hljs-subst\">${<span class=\"hljs-keyword\">this<\/span>.name}<\/span> says Woof!`<\/span>); \n};\n\n<span class=\"hljs-keyword\">const<\/span> dog1 = <span class=\"hljs-keyword\">new<\/span> Animal(); \ndog1.name = <span class=\"hljs-string\">\"Snoopy\"<\/span>; <span class=\"hljs-comment\">\/\/ \u8a2d\u5b9a\u5be6\u4f8b\u540d\u7a31<\/span>\n\n<span class=\"hljs-keyword\">const<\/span> dog2 = <span class=\"hljs-keyword\">new<\/span> Animal();\ndog2.name = <span class=\"hljs-string\">\"Pluto\"<\/span>;\n\ndog1.speak(); <span class=\"hljs-comment\">\/\/ \u8f38\u51fa: Snoopy says Woof!<\/span>\ndog2.speak(); <span class=\"hljs-comment\">\/\/ \u8f38\u51fa: Pluto says Woof!<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-18\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><strong>\u539f\u578b\u7269\u4ef6 (Prototype Object)<\/strong> \u6307\u7684\u5c31\u662fAnimal\u9019\u7a2e\u5177\u6709\u201d\u96d9\u91cd\u8eab\u5206\u201d\u7684function\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\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=\"wp-block-paragraph\">\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<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-19\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">Animal<\/span>(<span class=\"hljs-params\"><\/span>) <\/span>{\n    <span class=\"hljs-keyword\">this<\/span>.name = <span class=\"hljs-string\">\"Instance Name\"<\/span>; <span class=\"hljs-comment\">\/\/ \u5be6\u4f8b\u5c6c\u6027<\/span>\n\n    <span class=\"hljs-comment\">\/\/ \u5beb\u6cd5\u4e8c\uff1a\u65b9\u6cd5\u5b9a\u7fa9\u5728\u5efa\u69cb\u51fd\u5f0f\u5167<\/span>\n    <span class=\"hljs-keyword\">this<\/span>.speak = <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> (<span class=\"hljs-params\"><\/span>) <\/span>{\n        <span class=\"hljs-built_in\">console<\/span>.log(<span class=\"hljs-string\">\"Woof\"<\/span>);\n    };\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-19\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<ul class=\"wp-block-list\">\n<li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\">\n\n\n\n<ul class=\"wp-block-list\">\n<li>JS \u7684\u591a\u5f62\u8207python\u4e00\u6a23\u4f7f\u7528<strong>\u9d28\u5b50\u578b\u5225 (Duck Typing)<\/strong><\/li>\n<\/ul>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-20\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">makeSound<\/span>(<span class=\"hljs-params\">obj<\/span>) <\/span>{\n  obj.speak();\n}\nDog.prototype.speak = <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span>(<span class=\"hljs-params\"><\/span>) <\/span>{ <span class=\"hljs-built_in\">console<\/span>.log(<span class=\"hljs-string\">\"Woof!\"<\/span>); }\t<span class=\"hljs-comment\">\/\/ \u8f38\u51fa \"Woof!\"<\/span>\nCat.prototype.speak = <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span>(<span class=\"hljs-params\"><\/span>) <\/span>{ <span class=\"hljs-built_in\">console<\/span>.log(<span class=\"hljs-string\">\"Meow!\"<\/span>); }\t<span class=\"hljs-comment\">\/\/ \u8f38\u51fa \"Meow!\"<\/span>\n<span class=\"hljs-keyword\">const<\/span> robot = { <span class=\"hljs-attr\">speak<\/span>: <span class=\"hljs-function\"><span class=\"hljs-params\">()<\/span> =&gt;<\/span> <span class=\"hljs-built_in\">console<\/span>.log(<span class=\"hljs-string\">\"Beep Boop.\"<\/span>) };<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-20\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\">\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 \u2013 interface\u3002<\/strong><\/h4>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">\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=\"wp-block-paragraph\">\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<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-21\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">interface<\/span> <span class=\"hljs-title\">Options<\/span> <\/span>{ id: number; }\n\n<span class=\"hljs-class\"><span class=\"hljs-keyword\">interface<\/span> <span class=\"hljs-title\">Options<\/span> <\/span>{ verbose: boolean; } <span class=\"hljs-comment\">\/\/ TS \u81ea\u52d5\u5408\u4f75<\/span>\n\n<span class=\"hljs-comment\">\/\/ \u6700\u7d42 Options: { id: number; verbose: boolean; }<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-21\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\">\n\n\n\n<h2 class=\"wp-block-heading\" id=\"c-%e7%89%a9%e4%bb%b6%e5%b0%b1%e6%98%af%e4%bd%a0%e5%ae%9a%e7%be%a9%e7%9a%84%e8%a8%98%e6%86%b6%e9%ab%94%e5%8d%80%e5%a1%8a\">C++ : \u7269\u4ef6\u5c31\u662f\u4f60\u5b9a\u7fa9\u7684\u8a18\u61b6\u9ad4\u5340\u584a<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">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>\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>\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>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=\"wp-block-paragraph\">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>\u7269\u4ef6\u672c\u8eab\u4e00\u5b9a\u5728<strong>Heap<\/strong>\u4e0a\u5206\u914d\u3002<\/li>\n\n\n\n<li>\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>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 \u2013 Runtime Polymorphism<\/strong>\uff0c\u904b\u884c\u6642\u591a\u5f62\u8207<strong>Dynamic Binding<\/strong>\u3002<\/h4>\n<\/blockquote>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-22\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\">class Animal {\npublic:\n    virtual void speak(); \/\/ virtual \u6c7a\u5b9a\u662f\u5426\u52d5\u614b\u7e6b\u7d50(<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">strong<\/span>&gt;<\/span>Dynamic Binding<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">strong<\/span>&gt;<\/span>)\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><\/span><small class=\"shcb-language\" id=\"shcb-language-22\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">\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=\"wp-block-separator has-alpha-channel-opacity is-style-wide\">\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 \u2013 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=\"wp-block-paragraph\">\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<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-23\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Shape<\/span> <\/span>{\n<span class=\"hljs-keyword\">public<\/span>:\n    virtual double area() = <span class=\"hljs-number\">0<\/span>; <span class=\"hljs-comment\">\/\/ \u7d14\u865b\u64ec\u51fd\u5f0f<\/span>\n};<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-23\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><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=\"wp-block-separator has-alpha-channel-opacity is-style-wide\">\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 \u2013 Steak &amp; Heap<\/h3>\n<\/blockquote>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-24\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">Dog d;             <span class=\"hljs-comment\">\/\/ stack (\u68e7)<\/span>\nDog* p = <span class=\"hljs-keyword\">new<\/span> Dog(); <span class=\"hljs-comment\">\/\/ heap (\u5806)<\/span>\n<span class=\"hljs-keyword\">delete<\/span> p;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-24\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><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><strong>\u512a\u9ede\uff1a<\/strong> \u8a18\u61b6\u9ad4\u5206\u914d\u548c\u91cb\u653e\u6975\u5feb\u3002<\/li>\n\n\n\n<li><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=\"wp-block-paragraph\"><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><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><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=\"wp-block-separator has-alpha-channel-opacity is-style-wide\">\n\n\n\n<h1 class=\"wp-block-heading\" id=\"%e5%bf%83%e5%be%97\">\u5fc3\u5f97<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\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=\"wp-block-paragraph\">\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\u201d\u7269\u4ef6\u201d\u662f\u4ec0\u9ebc\u55ce?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\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=\"wp-block-paragraph\">\u6240\u4ee5\u5c31\u9019\u6a23\uff0c\u6211\u99ac\u4e0a\u53bb\u554fGPT : \u5982\u4f55\u5b9a\u7fa9Java, python, js, c++\u4e2d\u7684<strong>\u201c\u7269\u4ef6\u201d<\/strong>\uff0c\u518d\u7e7c\u7e8c\u4e86\u89e3\u5230\u6574\u500b\u7269\u4ef6\u5c0e\u5411\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\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=\"wp-block-paragraph\">\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\u201d\u7269\u4ef6\u5c0e\u5411\u201d\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=\"wp-block-paragraph\">\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=\"wp-block-paragraph\">\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=\"wp-block-paragraph\">\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 \u201c\u7269\u4ef6\u201d\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, Python, JS, C++\u7a0b\u5f0f\u8a9e\u8a00\u7684\u57fa\u790e\u6559\u7a0b\uff0c\u5efa\u8b70\u6709\u4e00\u5b9a\u7a0b\u5ea6\u518d\u95b1\u8b80\u3002) \u8981\u4e86\u89e3\u7269\u4ef6\u5c0e\u5411\u6211\u5011\u9700\u8981\u5148\u4f86\u91d0\u6e05\u201c\u7269\u4ef6\u201d\u4e00\u8a5e\uff0c\u5728\u5404\u500b\u8a9e\u8a00\u4e2d\u7684\u4ee3\u8868\u610f\u7fa9\u3002 What is OBJECT ? \u7e3d\u7d50: object = interface\/attributes \uff0b method\/function Java\uff1aClass-based Object \u7269\u4ef6\u662f\u985e\u5225 (Class) \u7684\u5be6\u4f8b (Instance)\u3002 \u7528class\u5ba3\u544a\u7269\u4ef6\uff0c\u7269\u4ef6\u662f \u985e\u5225 (Class) \u7684\u5be6\u4f8b (Instance)\uff0c\u900f\u904enew\u95dc\u9375\u5b57\u5efa\u7acb\u7269\u4ef6\u3002 Python\uff1aEverything is an Object \u842c\u7269\u7686\u7269\u4ef6\u3002 \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 5 (int) \u6216 &#8220;hello&#8221; (string)\uff0c\u5b83\u5011\u90fd\u6709\u81ea\u5df1\u7684\u985e\u578b\uff08\u985e\u5225\uff09\u548c\u65b9\u6cd5\u3002 \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 JavaScript\uff1aPrototype-based Object-Oriented \u7269\u4ef6\u662f\u5c6c\u6027 (Properties) \u7684\u52d5\u614b\u96c6\u5408\uff0c\u6bcf\u500b\u5c6c\u6027\u90fd\u5c07\u4e00\u500bKey\u6620\u5c04\u5230\u4e00\u500b\u503cValue\u3002 \u7269\u4ef6\u662fJS\u8a9e\u8a00\u7684\u6838\u5fc3\uff0c\u7e7c\u627f\u9760 prototype chain [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":440,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"class_list":["post-594","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/hyc.eshachem.com\/program\/wp-json\/wp\/v2\/pages\/594","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hyc.eshachem.com\/program\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/hyc.eshachem.com\/program\/wp-json\/wp\/v2\/types\/page"}],"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=594"}],"version-history":[{"count":1,"href":"https:\/\/hyc.eshachem.com\/program\/wp-json\/wp\/v2\/pages\/594\/revisions"}],"predecessor-version":[{"id":595,"href":"https:\/\/hyc.eshachem.com\/program\/wp-json\/wp\/v2\/pages\/594\/revisions\/595"}],"up":[{"embeddable":true,"href":"https:\/\/hyc.eshachem.com\/program\/wp-json\/wp\/v2\/pages\/440"}],"wp:attachment":[{"href":"https:\/\/hyc.eshachem.com\/program\/wp-json\/wp\/v2\/media?parent=594"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}