{"id":12060,"date":"2023-11-23T01:17:35","date_gmt":"2023-11-22T17:17:35","guid":{"rendered":"https:\/\/blog.iyatt.com\/?p=12060"},"modified":"2024-05-10T10:05:43","modified_gmt":"2024-05-10T02:05:43","slug":"%e7%94%b1-java-%e5%85%a5-kotlin%ef%bc%88%e7%bc%96%e8%be%91%e4%b8%ad%ef%bc%89","status":"publish","type":"post","link":"https:\/\/blog.iyatt.com\/?p=12060","title":{"rendered":"Kotlin \u5b66\u4e60\u8bb0\u5f55"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 ez-toc-wrap-center counter-hierarchy ez-toc-counter ez-toc-light-blue ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title ez-toc-toggle\" style=\"cursor:pointer\">\u76ee\u5f55<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/blog.iyatt.com\/?p=12060\/#1_%E5%89%8D%E8%A8%80\" >1 \u524d\u8a00<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/blog.iyatt.com\/?p=12060\/#2_%E7%8E%AF%E5%A2%83\" >2 \u73af\u5883<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/blog.iyatt.com\/?p=12060\/#3_%E7%BC%96%E7%A0%81%E8%A7%84%E8%8C%83\" >3 \u7f16\u7801\u89c4\u8303<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/blog.iyatt.com\/?p=12060\/#4_%E6%8E%A2%E7%B4%A2\" >4 \u63a2\u7d22<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/blog.iyatt.com\/?p=12060\/#when_%E8%AF%AD%E5%8F%A5\" >when \u8bed\u53e5<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/blog.iyatt.com\/?p=12060\/#42_%E6%9D%A1%E4%BB%B6%E6%8E%A7%E5%88%B6%E8%AF%AD%E5%8F%A5%E7%9A%84%E8%BF%94%E5%9B%9E%E5%80%BC\" >4.2 \u6761\u4ef6\u63a7\u5236\u8bed\u53e5\u7684\u8fd4\u56de\u503c<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/blog.iyatt.com\/?p=12060\/#43_%E5%BE%AA%E7%8E%AF%E6%8E%A7%E5%88%B6\" >4.3 \u5faa\u73af\u63a7\u5236<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/blog.iyatt.com\/?p=12060\/#431_for\" >4.3.1 for<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/blog.iyatt.com\/?p=12060\/#432_while\" >4.3.2 while<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/blog.iyatt.com\/?p=12060\/#433_%E8%BF%94%E5%9B%9E%E5%92%8C%E8%B7%B3%E8%BD%AC\" >4.3.3 \u8fd4\u56de\u548c\u8df3\u8f6c<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/blog.iyatt.com\/?p=12060\/#3331_break_%E6%A0%87%E7%AD%BE\" >3.3.3.1 break \u6807\u7b7e<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/blog.iyatt.com\/?p=12060\/#3332_break_%E6%A0%87%E7%AD%BE\" >3.3.3.2 break \u6807\u7b7e<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/blog.iyatt.com\/?p=12060\/#3333_return_%E6%A0%87%E7%AD%BE\" >3.3.3.3 return \u6807\u7b7e<\/a><\/li><\/ul><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/blog.iyatt.com\/?p=12060\/#44_%E5%85%A5%E5%8F%A3%E5%87%BD%E6%95%B0\" >4.4 \u5165\u53e3\u51fd\u6570<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/blog.iyatt.com\/?p=12060\/#45_%E5%87%BD%E6%95%B8\" >4.5 \u51fd\u6578<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/blog.iyatt.com\/?p=12060\/#451_infix\" >4.5.1 infix<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/blog.iyatt.com\/?p=12060\/#452_%E9%87%8D%E8%BD%BD\" >4.5.2 \u91cd\u8f7d<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/blog.iyatt.com\/?p=12060\/#453_Lambda_%E8%A1%A8%E8%BE%BE%E5%BC%8F\" >4.5.3 Lambda \u8868\u8fbe\u5f0f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/blog.iyatt.com\/?p=12060\/#454_%E5%8F%AF%E5%8F%98%E5%8F%82%E6%95%B0\" >4.5.4 \u53ef\u53d8\u53c2\u6570<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-20\" href=\"https:\/\/blog.iyatt.com\/?p=12060\/#46_%E7%B1%BB\" >4.6 \u7c7b<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-21\" href=\"https:\/\/blog.iyatt.com\/?p=12060\/#461_%E5%B1%9E%E6%80%A7\" >4.6.1 \u5c5e\u6027<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-22\" href=\"https:\/\/blog.iyatt.com\/?p=12060\/#462_%E6%9E%84%E9%80%A0%E5%87%BD%E6%95%B0\" >4.6.2 \u6784\u9020\u51fd\u6570<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-23\" href=\"https:\/\/blog.iyatt.com\/?p=12060\/#463_%E4%BF%AE%E9%A5%B0%E7%AC%A6\" >4.6.3 \u4fee\u9970\u7b26<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-24\" href=\"https:\/\/blog.iyatt.com\/?p=12060\/#4631_%E8%AE%BF%E9%97%AE%E6%9D%83%E9%99%90%E4%BF%AE%E9%A5%B0%E7%AC%A6\" >4.6.3.1 \u8bbf\u95ee\u6743\u9650\u4fee\u9970\u7b26<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-25\" href=\"https:\/\/blog.iyatt.com\/?p=12060\/#4632_%E7%B1%BB%E5%B1%9E%E6%80%A7%E4%BF%AE%E9%A5%B0%E7%AC%A6\" >4.6.3.2 \u7c7b\u5c5e\u6027\u4fee\u9970\u7b26<\/a><\/li><\/ul><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-26\" href=\"https:\/\/blog.iyatt.com\/?p=12060\/#47_%E7%BB%A7%E6%89%BF%E4%B8%8E%E9%87%8D%E5%86%99\" >4.7 \u7ee7\u627f\u4e0e\u91cd\u5199<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-27\" href=\"https:\/\/blog.iyatt.com\/?p=12060\/#471_%E4%B8%80%E8%88%AC%E5%86%99%E6%B3%95\" >4.7.1 \u4e00\u822c\u5199\u6cd5<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-28\" href=\"https:\/\/blog.iyatt.com\/?p=12060\/#472_%E5%AD%98%E5%9C%A8%E6%9E%84%E9%80%A0%E5%87%BD%E6%95%B0\" >4.7.2 \u5b58\u5728\u6784\u9020\u51fd\u6570<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-29\" href=\"https:\/\/blog.iyatt.com\/?p=12060\/#473_%E5%B1%9E%E6%80%A7%E9%87%8D%E5%86%99\" >4.7.3 \u5c5e\u6027\u91cd\u5199<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-30\" href=\"https:\/\/blog.iyatt.com\/?p=12060\/#474_%E6%8A%BD%E8%B1%A1\" >4.7.4 \u62bd\u8c61<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-31\" href=\"https:\/\/blog.iyatt.com\/?p=12060\/#48_%E6%8E%A5%E5%8F%A3\" >4.8 \u63a5\u53e3<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-32\" href=\"https:\/\/blog.iyatt.com\/?p=12060\/#481_%E5%A3%B0%E6%98%8E%E5%92%8C%E9%BB%98%E8%AE%A4%E5%AE%9E%E7%8E%B0\" >4.8.1 \u58f0\u660e\u548c\u9ed8\u8ba4\u5b9e\u73b0<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-33\" href=\"https:\/\/blog.iyatt.com\/?p=12060\/#492_%E5%B1%9E%E6%80%A7\" >4.9.2 \u5c5e\u6027<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-34\" href=\"https:\/\/blog.iyatt.com\/?p=12060\/#492_%E5%A4%9A%E7%BB%A7%E6%89%BF\" >4.9.2 \u591a\u7ee7\u627f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-35\" href=\"https:\/\/blog.iyatt.com\/?p=12060\/#493_%E5%87%BD%E6%95%B0%E5%BC%8F%E6%8E%A5%E5%8F%A3\" >4.9.3 \u51fd\u6570\u5f0f\u63a5\u53e3<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-36\" href=\"https:\/\/blog.iyatt.com\/?p=12060\/#49_%E6%89%A9%E5%B1%95\" >4.9 \u6269\u5c55<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-37\" href=\"https:\/\/blog.iyatt.com\/?p=12060\/#410_%E6%95%B0%E6%8D%AE%E7%B1%BB\" >4.10 \u6570\u636e\u7c7b<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-38\" href=\"https:\/\/blog.iyatt.com\/?p=12060\/#411_%E4%BC%B4%E7%94%9F\" >4.11 \u4f34\u751f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-39\" href=\"https:\/\/blog.iyatt.com\/?p=12060\/#412_%E6%9E%9A%E4%B8%BE%E7%B1%BB\" >4.12 \u679a\u4e3e\u7c7b<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h1><span class=\"ez-toc-section\" id=\"1_%E5%89%8D%E8%A8%80\"><\/span>1 \u524d\u8a00<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>\u51c6\u5907\u5165 Android\uff0c\u62bd\u7a7a\u4e86\u89e3\u4e00\u4e0b Kotlin \u8bed\u6cd5\u3002<\/p>\n<h1><span class=\"ez-toc-section\" id=\"2_%E7%8E%AF%E5%A2%83\"><\/span>2 \u73af\u5883<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>JDK 17.0.9<br \/>\nKotlin 1.9.20<\/p>\n<p>\u73af\u5883\u914d\u7f6e\uff1a<a href=\"https:\/\/blog.iyatt.com\/?p=12040\">https:\/\/blog.iyatt.com\/?p=12040<\/a><\/p>\n<h1><span class=\"ez-toc-section\" id=\"3_%E7%BC%96%E7%A0%81%E8%A7%84%E8%8C%83\"><\/span>3 \u7f16\u7801\u89c4\u8303<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p><a href=\"https:\/\/book.kotlincn.net\/text\/coding-conventions.html\">https:\/\/book.kotlincn.net\/text\/coding-conventions.html<\/a><\/p>\n<p>\u8fd9\u4e2a\u7f16\u7801\u89c4\u8303\u53ef\u4ee5\u4f5c\u4e3a\u53c2\u8003\uff0c\u5f53\u7136\u6211\u4e2a\u4eba\u800c\u8a00\u8fd8\u662f\u559c\u6b22\u6cbf\u7528\u81ea\u5df1\u7684\u65b9\u6848\u3002\u4e3b\u8981\u6765\u81ea C\/C++ \u7684\u4e60\u60ef\u98ce\u683c\uff0c\u6bd4\u5982\u5927\u62ec\u53f7\u72ec\u7acb\u6210\u884c\uff0c\u6761\u4ef6\u3001\u5faa\u73af\u5fc5\u987b\u52a0\u5927\u62ec\u53f7\uff08\u5373\u4f7f\u53ea\u6709\u4e00\u4e2a\u8bed\u53e5\uff09\u3002\u4e0d\u8fc7\u8fd8\u662f\u9047\u5230\u4e00\u4e2a\u7279\u6b8a\u7684\uff0cKotlin \u4e0d\u5efa\u8bae\u4f7f\u7528\u4e0b\u5212\u7ebf\u547d\u540d\u6cd5\uff0c\u5728 IDEA \u4e2d\u7f16\u8f91\u7684\u65f6\u5019\uff0c\u53ea\u8981\u7528\u4e86\u5c31\u4f1a\u51fa\u73b0\u6ce2\u6d6a\u53f7\u3002\u8fd9\u4e2a\u548c\u76ee\u524d\u7684\u98ce\u683c\u6709\u70b9\u51b2\u7a81\u8fd8\u4e0d\u53ef\u8c03\u548c\uff0c\u6211\u6700\u5f00\u59cb\u5b66\u7f16\u7a0b\u7684\u65f6\u5019\u662f\u7528\u9a7c\u5cf0\u6cd5\uff0c\u540e\u9762\u611f\u89c9\u9a7c\u5cf0\u6cd5\u592a\u7d27\u5bc6\u4e86\uff0c\u4e0d\u591f\u6e05\u6670\uff0c\u4e4b\u540e\u5c31\u6539\u7528\u4e0b\u5212\u7ebf\u6cd5\u4e86\uff0c\u7ed3\u679c Kotlin \u4e0d\u8ba9\u7528\u4e0b\u5212\u7ebf\u6cd5\uff08\u770b\u5230\u6ce2\u6d6a\u7ebf\u592a\u96be\u53d7\u4e86\uff0c\u8fd8\u662f\u5f97\u59a5\u534f\uff09\u3002<\/p>\n<h1><span class=\"ez-toc-section\" id=\"4_%E6%8E%A2%E7%B4%A2\"><\/span>4 \u63a2\u7d22<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<h2><span class=\"ez-toc-section\" id=\"when_%E8%AF%AD%E5%8F%A5\"><\/span>when \u8bed\u53e5<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Kotlin \u4e2d\u6ca1\u6709 switch\uff0c\u4f46\u662f\u6709 when\uff0c\u5176\u4f5c\u7528\u7c7b\u4f3c<\/p>\n<pre><code class=\"language-kotlin\">fun main()\n{\n    val value = 10\n\n    when (value)\n    {\n        1 -&gt;\n        {\n            println(&quot;\u7ed3\u679c\u4e3a 1&quot;)\n        }\n\n        5 -&gt;\n        {\n            println(&quot;\u7ed3\u679c\u4e3a 5&quot;)\n        }\n\n        10 -&gt;\n        {\n            println(&quot;\u7ed3\u679c\u4e3a 10&quot;)\n        }\n\n        else -&gt;\n        {\n            println(&quot;\u5176\u5b83&quot;)\n        }\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/11\/image-1700741739344.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 91px; --smush-placeholder-aspect-ratio: 91\/61;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"42_%E6%9D%A1%E4%BB%B6%E6%8E%A7%E5%88%B6%E8%AF%AD%E5%8F%A5%E7%9A%84%E8%BF%94%E5%9B%9E%E5%80%BC\"><\/span>4.2 \u6761\u4ef6\u63a7\u5236\u8bed\u53e5\u7684\u8fd4\u56de\u503c<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Kotlin \u4e2d\u6761\u4ef6\u63a7\u5236\u8bed\u53e5\u53ef\u4ee5\u6709\u8fd4\u56de\u503c\uff0c\u8fd9\u4e2a\u5728\u4ee5\u524d\u63a5\u89e6\u7684\u8bed\u8a00\u91cc\u6ca1\u89c1\u8fc7\u3002\u6700\u7ec8\u7684\u8fd4\u56de\u503c\u6765\u81ea\u4e8e\u5339\u914d\u7684\u4ee3\u7801\u5757\u91cc\u6700\u540e\u4e00\u4e2a\u8bed\u53e5\uff0c\u4e14\u63a5\u6536\u8fd4\u56de\u503c\u7684\u65f6\u5019\uff0c\u5fc5\u987b\u5b58\u5728 else \u4ee5\u4fdd\u8bc1\u5728\u6ca1\u6709\u5339\u914d\u5230\u7684\u60c5\u51b5\u4e0b\u6709\u9ed8\u8ba4\u503c\u3002<br \/>\nKotlin \u6ca1\u6709\u7c7b\u4f3c C\/C++\/Java\uff08\u540e\u6709\u63d0\u5230\u5c31\u7b80\u79f0 C \u7cfb\uff09 \u7684\u4e09\u5143\u8fd0\u7b97\u7b26\uff0c\u4f46\u662f\u53ef\u4ee5\u901a\u8fc7 if-else \u505a\u5230\u4e09\u5143\u8fd0\u7b97\u7b26\u7684\u6548\u679c\uff0c\u8fd8\u53ef\u4ee5\u63d0\u4f9b\u66f4\u591a else if \u6761\u4ef6\u7684\u5224\u65ad\u3002Python \u4e2d\u7684\u4e09\u5143\u8fd0\u7b97\u7b26\u8bed\u6cd5\u4e0a\u662f\u7528\u7684 if-else\uff0c\u4f46\u662f\u90a3\u662f\u4e13\u7528\u7684\uff0c\u53ea\u662f\u76f8\u5f53\u4e8e\u628aC\u7cfb\u7684\u95ee\u53f7\u5192\u53f7\u6362\u6210 if-else \u800c\u5df2\uff0c\u4ec5\u662f\u4e09\u5143\u8fd0\u7b97\u7b26\u7684\u7b26\u53f7\uff0c\u800c\u4e0d\u662f\u6539\u4e86 if \u6761\u4ef6\u5224\u65ad\u7684\u7528\u9014\u3002<\/p>\n<p>if<\/p>\n<pre><code class=\"language-kotlin\">fun main()\n{\n    val value = 10\n    val ret = if (value == 1)\n    {\n        &quot;\u5339\u914d 1&quot;\n        true\n    }\n    else if (value == 2)\n    {\n        println(&quot;\u5339\u914d 2&quot;)\n        true\n    }\n    else\n    {\n        &quot;\u5176\u5b83&quot;\n        false\n    }\n\n    println(ret)\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/11\/image-1700741831793.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 149px; --smush-placeholder-aspect-ratio: 149\/94;\" \/><\/p>\n<p>when<\/p>\n<pre><code class=\"language-kotlin\">fun main()\n{\n    val value = 11\n\n    val ret = when (value)\n    {\n        1 -&gt;\n        {\n            &quot;\u7ed3\u679c\u4e3a 1&quot;\n        }\n\n        5 -&gt;\n        {\n            &quot;\u7ed3\u679c\u4e3a 5&quot;\n        }\n\n        10 -&gt;\n        {\n            &quot;\u7ed3\u679c\u4e3a 10&quot;\n        }\n\n        else -&gt;\n        {\n            &quot;\u5176\u5b83&quot;\n        }\n    }\n\n    println(ret)\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/11\/image-1700742117853.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 96px; --smush-placeholder-aspect-ratio: 96\/81;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"43_%E5%BE%AA%E7%8E%AF%E6%8E%A7%E5%88%B6\"><\/span>4.3 \u5faa\u73af\u63a7\u5236<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"431_for\"><\/span>4.3.1 for<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<pre><code class=\"language-kotlin\">fun main()\n{\n    val items = listOf(&quot;\u5c0f\u7ea2&quot;, &quot;\u5c0f\u660e&quot;, &quot;\u5c0f\u5f20&quot;)\n\n    \/\/ for \u904d\u5386\n    for (item in items)\n    {\n        print(&quot;$item\uff0c&quot;)\n    }\n    println()\n\n    \/\/ for \u904d\u5386\u7d22\u5f15\n    for (idx in items.indices)\n    {\n        print(&quot;$idx ${items[idx]}\uff0c&quot;)\n    }\n    println()\n\n    \/\/ forEach \u904d\u5386\n    items.forEach { item -&gt;\n        print(&quot;$item\uff0c&quot;)\n    }\n    println()\n\n    \/\/ forEach \u904d\u5386\u7d22\u5f15\n    items.forEachIndexed { idx, item -&gt;\n        print(&quot;$idx $item\uff0c&quot;)\n    }\n    println()\n\n    val map = mapOf(&quot;value1&quot; to 1, &quot;value2&quot; to 2, &quot;value3&quot; to 3)\n\n    for ((key, value) in map)\n    {\n        print(&quot;$key:$value, &quot;)\n    }\n    println()\n\n    map.forEach { (key, value) -&gt;\n        print(&quot;$key:$value, &quot;)\n    }\n    println()\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/11\/image-1700744507993.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 273px; --smush-placeholder-aspect-ratio: 273\/194;\" \/><\/p>\n<h3><span class=\"ez-toc-section\" id=\"432_while\"><\/span>4.3.2 while<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>while \u548c do-while \u8fd9\u4e00\u70b9\u548c C \u7cfb\u662f\u4e00\u6837\u7684\uff0c\u524d\u8005\u662f\u5728\u6bcf\u6b21\u5faa\u73af\u5f00\u59cb\u524d\u5224\u65ad\u662f\u5426\u6ee1\u8db3\u6761\u4ef6\uff0c\u540e\u8005\u662f\u5faa\u73af\u7ed3\u675f\u4e00\u6b21\u540e\u5224\u65ad\u4e00\u6b21\u6761\u4ef6<\/p>\n<pre><code class=\"language-kotlin\">fun main()\n{\n    var x = 0\n    var y = 10\n\n    while (x &gt; 0)\n    {\n        print(x--)\n        print(&quot; &quot;)\n    }\n    println()\n\n    do\n    {\n        print(y--)\n        print(&quot; &quot;)\n    }\n    while (y &gt; 10)\n    println()\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/11\/image-1700745882232.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 175px; --smush-placeholder-aspect-ratio: 175\/121;\" \/><\/p>\n<h3><span class=\"ez-toc-section\" id=\"433_%E8%BF%94%E5%9B%9E%E5%92%8C%E8%B7%B3%E8%BD%AC\"><\/span>4.3.3 \u8fd4\u56de\u548c\u8df3\u8f6c<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u8fd9\u70b9\u548c C \u7cfb\u5dee\u4e0d\u591a\uff0creturn \u7ed3\u675f\u5f53\u524d\u6240\u5728\u51fd\u6570\uff0cbreak \u7ec8\u6b62\u6240\u5728\u7684\u4e00\u5c42\u5faa\u73af\uff0ccontinue \u6240\u5728\u5faa\u73af\u7684\u5f53\u6b64\u5faa\u73af\u7ed3\u675f\uff0c\u8fdb\u5165\u6240\u5728\u5faa\u73af\u7684\u4e0b\u4e00\u8f6e\u6b21\u5faa\u73af\u3002<br \/>\n\u4e0d\u8fc7 Kotlin \u4e2d\u6709\u4e86\u6807\u7b7e\u7684\u6982\u5ff5\uff0c\u6807\u7b7e\u540d\u53ef\u4ee5\u81ea\u5df1\u8bbe\u7f6e<\/p>\n<h4><span class=\"ez-toc-section\" id=\"3331_break_%E6%A0%87%E7%AD%BE\"><\/span>3.3.3.1 break \u6807\u7b7e<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>break \u53ea\u80fd\u8df3\u51fa\u5f53\u524d\u6240\u5728\u7684\u4e00\u5c42\u5faa\u73af\uff0c\u4f7f\u7528\u6807\u7b7e\u540e\u53ef\u4ee5\u8df3\u5230\u6807\u7b7e\u6240\u5728\u5faa\u73af\u7684\u5916\u9762\uff0c\u4e5f\u5c31\u662f\u53ef\u4ee5\u4e00\u6b21\u6027\u53ef\u4ee5\u8df3\u51fa\u6307\u5b9a\u5c42\u6570\u7684\u5faa\u73af<\/p>\n<pre><code class=\"language-kotlin\">fun main()\n{\n    for (x in 1..3)\n    {\n        myLabel@ for (y in 1..3)\n        {\n            for (z in 1..3)\n            {\n                if (z &gt; 1)\n                {\n                    break@myLabel\n                }\n                println(&quot;$x $y $z&quot;)\n            }\n        }\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/11\/image-1700747775003.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 101px; --smush-placeholder-aspect-ratio: 101\/100;\" \/><\/p>\n<h4><span class=\"ez-toc-section\" id=\"3332_break_%E6%A0%87%E7%AD%BE\"><\/span>3.3.3.2 break \u6807\u7b7e<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>continue \u53ea\u80fd\u7565\u8fc7\u6240\u5728\u5faa\u73af\u7684\u5f53\u6b21\u5faa\u73af\uff0c\u4f7f\u7528\u6807\u7b7e\u540e\uff0c\u53ef\u4ee5\u7565\u8fc7\u6807\u7b7e\u6240\u5728\u4f4d\u7f6e\u5faa\u73af\u7684\u5f53\u6b21\u5faa\u73af\uff0c\u5373\u53ef\u4ee5\u7565\u8fc7\u6307\u5b9a\u5c42\u6570\u7684\u5faa\u73af<\/p>\n<pre><code class=\"language-kotlin\">fun main()\n{\n    myLabel@ for (x in 1..3)\n    {\n        for (y in 1..3)\n        {\n            for (z in 1..3)\n            {\n                if (z &gt; 1)\n                {\n                    continue@myLabel\n                }\n                println(&quot;$x $y $z&quot;)\n            }\n        }\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/11\/image-1700748241133.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 82px; --smush-placeholder-aspect-ratio: 82\/98;\" \/><\/p>\n<h4><span class=\"ez-toc-section\" id=\"3333_return_%E6%A0%87%E7%AD%BE\"><\/span>3.3.3.3 return \u6807\u7b7e<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u76f4\u63a5\u4f7f\u7528 return \u4f1a\u7ed3\u675f\u5f53\u524d\u51fd\u6570\uff0c\u5728\u4e00\u4e9b\u60c5\u51b5\u4e0b\u53ea\u662f\u9700\u8981\u5c40\u90e8\u8fd4\u56de\uff0c\u5e76\u4e0d\u662f\u8981\u6574\u4e2a\u51fd\u6570\u7684\u8fd4\u56de\u3002<\/p>\n<pre><code class=\"language-kotlin\">fun foo()\n{\n    val items = listOf(10, 11, 12, 13)\n\n    items.forEach { item -&gt;\n        if (item == 11)\n        {\n            return\n        }\n        println(item)\n    }\n\n    println(&quot;foo \u7ed3\u675f&quot;)\n}\n\nfun main()\n{\n    foo()\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/11\/image-1700748816556.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 95px; --smush-placeholder-aspect-ratio: 95\/95;\" \/><\/p>\n<p>\u4f7f\u7528\u6807\u7b7e\u9650\u5236\u540e\uff0c\u8fd9\u91cc\u53ea\u4f1a\u5728\u5f53\u524d Lambda \u8868\u8fbe\u5f0f\u8fd4\u56de<\/p>\n<pre><code class=\"language-kotlin\">fun foo()\n{\n    val items = listOf(10, 11, 12, 13)\n\n    items.forEach myLabel@{ item -&gt;\n        if (item == 11)\n        {\n            return@myLabel\n        }\n        println(item)\n    }\n\n    println(&quot;foo \u7ed3\u675f&quot;)\n}\n\nfun main()\n{\n    foo()\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/11\/image-1700748872353.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 153px; --smush-placeholder-aspect-ratio: 153\/146;\" \/><\/p>\n<p>\u8fd9\u91cc\u53ef\u4ee5\u7b80\u5316\u4f7f\u7528\u9690\u5f0f\u6807\u7b7e\uff0c\u53ea\u8981\u6807\u7b7e\u548c\u63a5\u53d7\u8fd9\u4e2a Lambda \u8868\u8fbe\u5f0f\u7684\u51fd\u6570\u540c\u540d\u5c31\u884c<\/p>\n<pre><code class=\"language-kotlin\">fun foo()\n{\n    val items = listOf(10, 11, 12, 13)\n\n    items.forEach { item -&gt;\n        if (item == 11)\n        {\n            return@forEach\n        }\n        println(item)\n    }\n\n    println(&quot;foo \u7ed3\u675f&quot;)\n}\n\nfun main()\n{\n    foo()\n}<\/code><\/pre>\n<h2><span class=\"ez-toc-section\" id=\"44_%E5%85%A5%E5%8F%A3%E5%87%BD%E6%95%B0\"><\/span>4.4 \u5165\u53e3\u51fd\u6570<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Kotlin \u6bd4 Java \u5404\u65b9\u9762\u90fd\u7b80\u6d01\u5f88\u591a\uff0c\u7279\u522b\u662f\u5165\u53e3\u51fd\u6570\u3002\u56e0\u4e3a\u4e60\u60ef\u4e86 C\/C++\uff0c\u521a\u63a5\u89e6 Java \u7684\u65f6\u5019\u592a\u4e0d\u7406\u89e3\u628a\u5165\u53e3\u51fd\u6570\u653e\u5728\u7c7b\u4e2d\u7684\u884c\u4e3a\uff0c\u5fc5\u987b\u5199\u4e2a\u7c7b\u6765\u5305\u8d77\u6765\u5c31\u663e\u5f97\u5f88\u590d\u6742\u3002\u6211\u89c9\u5f97\u8fd8\u662f\u50cf C++ \u5f62\u5f0f\u7684\u6700\u597d\uff0c\u652f\u6301\u51fd\u6570\u5f0f\uff0c\u540c\u65f6\u652f\u6301\u9762\u5411\u5bf9\u8c61\uff0cKotlin \u8fd9\u70b9\u5c31\u7c7b\u4f3c\u3002\u5b8c\u5168\u9762\u5411\u5bf9\u8c61\u592a\u602a\u5f02\u4e86\uff0c\u5165\u53e3\u51fd\u6570\u672c\u8eab\u4e5f\u6ca1\u6709\u4f5c\u4e3a\u7c7b\u6210\u5458\u7684\u610f\u4e49\uff0c\u50cf\u662f\u4e3a\u4e86\u9762\u5411\u5bf9\u8c61\u8bbe\u8ba1\u800c\u5f3a\u5236\u8fd9\u6837\u641e\u4e00\u6837\uff0c\u4e0d\u662f\u5fc5\u8981\u7684\uff0c\u4e5f\u53ef\u80fd\u662f\u73b0\u9636\u6bb5\u6211\u6ca1\u7406\u89e3\u5230\u5b83\u7684\u7cbe\u795e\u5427\u3002<br \/>\n\u53e6\u5916\u4e00\u70b9 Java \u8981\u6c42\u5165\u53e3\u51fd\u6570\u5fc5\u987b\u6709\u53c2\u6570\uff0c\u5373\u4f7f\u4e0d\u7528\u4e5f\u8981\u5199\uff0c\u8fd9\u4e00\u70b9\u4e0a Kotlin \u548c C\/C++ \u4e00\u6837\u4e0d\u7528\u53ef\u4ee5\u7701\u7565\u3002<br \/>\n\u7136\u800c\u5b9e\u9645\u4e0a\u8fd9\u4e9b\u5de5\u4f5c\u53ea\u662f Kotlin \u7f16\u8bd1\u5668\u5e2e\u6211\u4eec\u505a\u4e86<\/p>\n<pre><code class=\"language-kotlin\">fun main()\n{\n    println(&quot;\u4f60\u597d\uff0c\u4e16\u754c\uff01&quot;)\n}<\/code><\/pre>\n<p>\u5c06\u7f16\u8bd1\u540e\u7684\u5b57\u8282\u7801\u6587\u4ef6\u53cd\u7f16\u8bd1\u4e3a Java\uff0c\u53ef\u4ee5\u770b\u5230\u7f16\u8bd1\u5668\u7ed9\u52a0\u4e0a\u4e86\u7c7b\uff0c\u800c\u7528 Kotlin \u5199\u7684\u5165\u53e3\u51fd\u6570\u53ea\u662f\u4f5c\u4e3a\u6210\u5458\u51fd\u6570\u88ab Java \u7684\u5165\u53e3\u51fd\u6570\u8c03\u7528\uff0c\u8fd9\u6837 Kotlin \u4e2d\u7684\u5165\u53e3\u51fd\u6570\u5c31\u53ef\u4ee5\u6ca1\u6709\u53c2\u6570\u3002<\/p>\n<pre><code class=\"language-java\">import kotlin.Metadata;\n\n@Metadata(\n   mv = {1, 9, 0},\n   k = 2,\n   d1 = {&quot;\\u0000\\b\\n\\u0000\\n\\u0002\\u0010\\u0002\\n\\u0000\\u001a\\u0006\\u0010\\u0000\\u001a\\u00020\\u0001\u00a8\\u0006\\u0002&quot;},\n   d2 = {&quot;main&quot;, &quot;&quot;, &quot;untitled&quot;}\n)\npublic final class MainKt {\n   public static final void main() {\n      String var0 = &quot;\u4f60\u597d\uff0c\u4e16\u754c\uff01&quot;;\n      System.out.println(var0);\n   }\n\n   \/\/ $FF: synthetic method\n   public static void main(String[] var0) {\n      main();\n   }\n}<\/code><\/pre>\n<p>\u4f46\u662f\u5982\u679c\u7ed9\u5165\u53e3\u51fd\u6570\u52a0\u4e0a\u53c2\u6570\uff0c\u90a3\u4e48\u6b64\u65f6 Kotlin \u4e2d\u5165\u53e3\u51fd\u6570\u548c Java \u7684\u5165\u53e3\u51fd\u6570\u5c31\u7b49\u540c\u4e8e\u4e00\u6837\u4e86<\/p>\n<pre><code class=\"language-kotlin\">fun main(args: Array&lt;String&gt;)\n{\n    println(args.size)\n}<\/code><\/pre>\n<pre><code class=\"language-java\">import kotlin.Metadata;\nimport kotlin.jvm.internal.Intrinsics;\nimport org.jetbrains.annotations.NotNull;\n\n@Metadata(\n   mv = {1, 9, 0},\n   k = 2,\n   d1 = {&quot;\\u0000\\u0014\\n\\u0000\\n\\u0002\\u0010\\u0002\\n\\u0000\\n\\u0002\\u0010\\u0011\\n\\u0002\\u0010\\u000e\\n\\u0002\\b\\u0002\\u001a\\u0019\\u0010\\u0000\\u001a\\u00020\\u00012\\f\\u0010\\u0002\\u001a\\b\\u0012\\u0004\\u0012\\u00020\\u00040\\u0003\u00a2\\u0006\\u0002\\u0010\\u0005\u00a8\\u0006\\u0006&quot;},\n   d2 = {&quot;main&quot;, &quot;&quot;, &quot;args&quot;, &quot;&quot;, &quot;&quot;, &quot;([Ljava\/lang\/String;)V&quot;, &quot;untitled&quot;}\n)\npublic final class MainKt {\n   public static final void main(@NotNull String[] args) {\n      Intrinsics.checkNotNullParameter(args, &quot;args&quot;);\n      int var1 = args.length;\n      System.out.println(var1);\n   }\n}<\/code><\/pre>\n<h2><span class=\"ez-toc-section\" id=\"45_%E5%87%BD%E6%95%B8\"><\/span>4.5 \u51fd\u6578<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u4e00\u822c\u51fd\u6570\u5b9a\u4e49\u683c\u5f0f<\/p>\n<pre><code class=\"language-kotlin\">\/\/ \u9ed8\u8ba4\u8fd4\u56de\u503c\u7c7b\u578b\u4e3a Unit\nfun foo1()\n{\n\n}\n\n\/\/ \u663e\u5f0f\u8fd4\u56de\u503c\u7c7b\u578b\nfun foo2(): Unit\n{\n\n}\n\n\/\/ \u53c2\u6570\u683c\u5f0f\nfun sum1(num1: Int, num2: Int): Int\n{\n    return num1 + num2\n}\n\n\/\/ \u5355\u884c\u8bed\u53e5\u7b80\u5316\nfun sum2(num1: Int, num2: Int): Int = num1 + num2\n\n\/\/ \u53c2\u6570\u9ed8\u8ba4\u503c\nfun sum3(num1: Int, num2: Int = 10) = num1 + num2\n\nfun main()\n{\n    println(sum1(9, 1))\n    println(sum2(11, 9))\n    println(sum3(10))\n    println(sum3(10, 20))\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/11\/image-1700760875642.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 113px; --smush-placeholder-aspect-ratio: 113\/143;\" \/><\/p>\n<h3><span class=\"ez-toc-section\" id=\"451_infix\"><\/span>4.5.1 infix<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<pre><code class=\"language-kotlin\">infix fun Int.sum(num: Int) = this + num\n\ninfix fun Float.sum(num: Int) = this + num\n\nfun main()\n{\n    println(4.sum(6))\n    println(13 sum 7)\n    println(6.7F sum 4)\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/11\/image-1700760601876.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 186px; --smush-placeholder-aspect-ratio: 186\/150;\" \/><\/p>\n<h3><span class=\"ez-toc-section\" id=\"452_%E9%87%8D%E8%BD%BD\"><\/span>4.5.2 \u91cd\u8f7d<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u51fd\u6570\u540d\u76f8\u540c\uff0c\u53c2\u6570\u4e2a\u6570\u6216\u7c7b\u578b\u4e0d\u540c<\/p>\n<pre><code class=\"language-kotlin\">fun foo()\n{\n    println(&quot;\u7a7a\u53c2\u6570&quot;)\n}\n\nfun foo(str: String)\n{\n    println(str)\n}\n\nfun foo(num: Int)\n{\n    println(num)\n}\n\nfun main()\n{\n    foo()\n    foo(&quot;\u4f60\u597d\uff0c\u4e16\u754c\uff01&quot;)\n    foo(10)\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/11\/image-1700761111564.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 170px; --smush-placeholder-aspect-ratio: 170\/132;\" \/><\/p>\n<h3><span class=\"ez-toc-section\" id=\"453_Lambda_%E8%A1%A8%E8%BE%BE%E5%BC%8F\"><\/span>4.5.3 Lambda \u8868\u8fbe\u5f0f<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<pre><code class=\"language-kotlin\">fun main()\n{\n    \/\/ \u65e0\u53c2\u6570\n    val printHello: () -&gt; Unit = { println(&quot;\u4f60\u597d\uff0c\u4e16\u754c\uff01&quot;) }\n    printHello()\n\n    \/\/ \u5e26\u53c2\u6570\n    val showInfo: (String, Int) -&gt; Unit = { name, age -&gt; println(&quot;$name $age&quot;) }\n    showInfo(&quot;\u5c0f\u7ea2&quot;, 20)\n\n    \/\/ \u5e26\u7c7b\u578b\u63a8\u65ad\n    \/\/ \u65e0\u663e\u5f0f\u58f0\u660e\u53c2\u6570\u7c7b\u578b\uff0cit \u5173\u952e\u5b57\u4ee3\u8868\u53c2\u6570\n    val greet: (String) -&gt; Unit = { println(&quot;\u4f60\u597d\uff0c$it&quot;) }\n    greet(&quot;\u5c0f\u5f3a&quot;)\n\n    \/\/ \u4f5c\u4e3a\u51fd\u6570\u53c2\u6570\n    \/\/ \u4e3a\u4e86\u63d0\u9ad8\u4ee3\u7801\u53ef\u8bfb\u6027\uff0c\u4e00\u822c\u4f7f\u7528\u4e0d\u540c\u5173\u952e\u8bcd\u533a\u5206\u7528\u9014\n    \/\/ action\uff1a\u7528\u4e8e\u6267\u884c\u67d0\u79cd\u526f\u4f5c\u7528\u64cd\u4f5c\u6216\u5904\u7406\n    \/\/ operator\uff1a\u7528\u4e8e\u5b9a\u4e49\u8fd0\u7b97\u7b26\u91cd\u8f7d\u6216\u7279\u5b9a\u7684\u903b\u8f91\n    \/\/ callback\uff1a\u4f5c\u4e3a\u56de\u8c03\u51fd\u6570\u7684\u53c2\u6570\n    \/\/ predicate\uff1a\u4f5c\u4e3a\u8c13\u8bcd\u51fd\u6570\u7684\u53c2\u6570\n    \/\/ transform\uff1a\u4f5c\u4e3a\u8f6c\u6362\u51fd\u6570\u7684\u53c2\u6570\n    \/\/ comparator\uff1a\u4f5c\u4e3a\u6bd4\u8f83\u5668\u7684\u53c2\u6570\n    \/\/ validator\uff1a\u4f5c\u4e3a\u9a8c\u8bc1\u51fd\u6570\u7684\u53c2\u6570\n    fun funGreet(name: String, action: (String) -&gt; Unit)\n    {\n        action(name)\n    }\n    funGreet(&quot;\u5c0f\u660e&quot;, greet)\n\n    fun calculate(x: Int, y: Int, operator: (Int, Int) -&gt; Int): Int\n    {\n        return operator(x, y)\n    }\n\n    \/\/ \u7b80\u5316\u5f62\u5f0f\n    val sum = { x: Int, y: Int -&gt; x + y }\n    println(sum(4, 6))\n    println(calculate(11, 9, sum))\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/11\/image-1700762994224.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 189px; --smush-placeholder-aspect-ratio: 189\/215;\" \/><\/p>\n<h3><span class=\"ez-toc-section\" id=\"454_%E5%8F%AF%E5%8F%98%E5%8F%82%E6%95%B0\"><\/span>4.5.4 \u53ef\u53d8\u53c2\u6570<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<pre><code class=\"language-kotlin\">fun show(vararg items: String)\n{\n    items.forEach {\n        print(&quot;$it &quot;)\n    }\n    println(&quot;\\n-------------------------&quot;)\n}\n\nfun show(s: String, vararg items: String)\n{\n    println(s)\n    items.forEach {\n        print(&quot;$it &quot;)\n    }\n    println(&quot;\\n-------------------------&quot;)\n}\n\nfun show(s1: String, s2: String = &quot;AAA&quot;, vararg items: String)\n{\n    println(s1)\n    println(s2)\n    items.forEach {\n        print(&quot;$it &quot;)\n    }\n    println(&quot;\\n-------------------------&quot;)\n}\n\nfun main()\n{\n    val items = arrayOf(&quot;\u82f9\u679c&quot;, &quot;\u9999\u8549&quot;, &quot;\u83e0\u841d&quot;)\n\n    show(*items)\n    show(s = &quot;\u6c34\u871c\u6843&quot;, *items)\n    show(&quot;\u8292\u679c&quot;, &quot;\u67ff\u5b50&quot;, items = items) \/\/ \u6307\u5b9a\u53c2\u6570\u7684\u65f6\u5019\uff0c\u53ef\u4ee5\u4e0d\u52a0\u661f\u53f7\uff08\u5c55\u5f00\u6570\u7ec4\uff0c\u5c06\u6bcf\u4e2a\u5143\u7d20\u4f5c\u4e3a\u4e00\u4e2a\u72ec\u7acb\u53c2\u6570\u4f20\u9012\uff09\uff0c\u5c06\u6574\u4e2a\u6570\u7ec4\u4f5c\u4e3a\u4e00\u4e2a\u53c2\u6570\u4f20\u9012\n    show(s1 = &quot;\u69b4\u83b2&quot;, items = items)\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/11\/image-1700764049619.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 242px; --smush-placeholder-aspect-ratio: 242\/348;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"46_%E7%B1%BB\"><\/span>4.6 \u7c7b<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"461_%E5%B1%9E%E6%80%A7\"><\/span>4.6.1 \u5c5e\u6027<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<pre><code class=\"language-kotlin\">class ClassA\n{\n    var num1 = 0\n\n    \/\/ get \u65b9\u6cd5\u5728\u53d6\u5c5e\u6027\u503c\u65f6\u4f1a\u8c03\u7528\n    \/\/ set \u65b9\u6cd5\u5728\u7ed9\u5c5e\u6027\u8d4b\u503c\u65f6\u4f1a\u8c03\u7528\n    \/\/ \u4e0b\u9762\u7684 get \u548c set \u662f\u4f1a\u9ed8\u8ba4\u6dfb\u52a0\u7684\uff0c\u53ef\u4ee5\u7701\u7565\n    \/\/ field \u5173\u952e\u5b57\u4ee3\u8868\u53d8\u91cf\u81ea\u8eab\n    var num2 = 0\n        get() = field\n        set(value)\n        {\n            field = value\n        }\n\n    \/\/ \u53ef\u4ee5\u6839\u636e\u9700\u8981\u4fee\u6539\u53d6\u503c\u8d4b\u503c\u89c4\u5219\n    var num3 = 0\n        get() = field + 2 \/\/ \u53d6\u503c\u7ed3\u679c\u52a0 2\n        set(value)\n        {\n            field = value - 3 \/\/ \u8d4b\u503c\u7ed3\u679c\u51cf 3\n        }\n}\n\nfun main()\n{\n    \/\/ \u521b\u5efa\u5bf9\u8c61\n    val ca = ClassA()\n\n    ca.num1 = 10\n    println(ca.num1)\n\n    \/\/ num3 \u5b9a\u4e49\u7684\u53d6\u503c\u8d4b\u503c\u65b9\u6cd5\u662f\u9ed8\u8ba4\u4f1a\u6dfb\u52a0\u7684\n    \/\/ \u6240\u4ee5\u6700\u7ec8\u6548\u679c\u548c num1 \u4e0d\u91cd\u5199\u53d6\u503c\u8d4b\u503c\u65b9\u6cd5\u7684\u4e00\u6837\n    ca.num2 = 10\n    println(ca.num2)\n\n    \/\/ \u6f14\u793a\u81ea\u5b9a\u4e49\u7684\u53d6\u503c\u8d4b\u503c\u65b9\u6cd5\n    println(ca.num3) \/\/ num3 \u521d\u59cb\u503c\u4e3a 0\uff0c\u4f46\u662f\u53d6\u503c\u65b9\u6cd5\u4f1a +2\uff0c\u6240\u4ee5\u4f1a\u8f93\u51fa 2\n    ca.num3 = 10 \/\/ \u8d4b\u503c 10\uff0c\u4f46\u662f\u8d4b\u503c\u65b9\u6cd5\u4f1a -3\uff0c\u6240\u4ee5\u5b9e\u9645\u8d4b\u503c\u662f 7\n    println(ca.num3) \/\/ num3 \u5b9e\u9645\u503c\u662f 7\uff0c\u4f46\u662f\u53d6\u503c\u65b9\u6cd5\u4f1a +2\uff0c\u6240\u4ee5\u4f1a\u8f93\u51fa 9\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/11\/image-1700835429316.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 127px; --smush-placeholder-aspect-ratio: 127\/124;\" \/><\/p>\n<h3><span class=\"ez-toc-section\" id=\"462_%E6%9E%84%E9%80%A0%E5%87%BD%E6%95%B0\"><\/span>4.6.2 \u6784\u9020\u51fd\u6570<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<pre><code class=\"language-kotlin\">class ClassA\n{\n    \/\/ \u521d\u59cb\u5316\u4ee3\u7801\u6bb5\n    init\n    {\n        println(&quot;A \u6267\u884c\u521d\u59cb\u5316&quot;)\n    }\n}\n\nclass ClassB constructor(name:String, age: Int) \/\/ \u4e3b\u6784\u9020\u51fd\u6570\n{\n    init\n    {\n        print(&quot;B \u6267\u884c\u521d\u59cb\u5316\uff1a&quot;)\n        println(&quot;$name $age&quot;) \/\/ \u4e3b\u6784\u9020\u51fd\u6570\u7684\u53c2\u6570\u53ef\u4ee5\u5728\u521d\u59cb\u5316\u4ee3\u7801\u6bb5\u91cc\u4f7f\u7528\n    }\n\n    \/\/ \u4e8c\u7ea7\u6784\u9020\u51fd\u6570\n    \/\/ \u4e3b\u6784\u9020\u51fd\u6570\u6709\u53c2\u6570\u7684\uff0c\u5728\u4e8c\u7ea7\u6784\u9020\u9700\u8981\u4ee3\u7406\u8c03\u7528\u4e3b\u6784\u9020\u51fd\u6570 this()\n    \/\/ \u8c03\u7528\u4e8c\u7ea7\u6784\u9020\u51fd\u6570\uff0c\u9996\u5148\u4f1a\u6267\u884c init \u4ee3\u7801\u5757\uff0c\u518d\u6267\u884c\u4e8c\u7ea7\u6784\u9020\u51fd\u6570\u7684\u4ee3\u7801\u5757\n    constructor(name: String, age: Int, height: Float) : this(name, age)\n    {\n        print(&quot;B \u4e8c\u7ea7\u6784\u9020\u51fd\u6570\uff1a&quot;)\n        println(&quot;$name $age $height&quot;)\n    }\n}\n\n\/\/ \u4e3b\u6784\u9020\u51fd\u6570\u53ef\u4ee5\u7701\u7565 constructor \u5173\u952e\u5b57\n\/\/ \u5982\u679c\u9700\u8981\u4f7f\u7528\u65e0\u53c2\u6784\u9020\uff0c\u5219\u4e3b\u6784\u9020\u51fd\u6570\u4e0d\u5199\u53c2\u6570\uff0c\u518d\u5199\u4e00\u4e2a\u65e0\u53c2\u7684\u4e8c\u7ea7\u6784\u9020\u51fd\u6570\u5373\u53ef\n\/\/\n\/\/ \u6211\u89c9\u5f97\u8fd9\u79cd\u65b9\u6848\u66f4\u63a5\u8fd1\u4e8e C++\/Python\/Java \u7684\u6784\u9020\u51fd\u6570\u98ce\u683c\n\/\/ \u76f4\u63a5\u4e0d\u7ba1\u4e3b\u6784\u9020\u51fd\u6570\uff0c\u7edf\u4e00\u4f7f\u7528\u4e8c\u7ea7\u6784\u9020\u51fd\u6570\uff0c\u663e\u5f97\u8f83\u4e3a\u7b80\u6d01\n\/\/ \u81f3\u4e8e init \u7684\u5b58\u5728\uff0c\u53ef\u4ee5\u65b9\u4fbf\u7edf\u4e00\u521d\u59cb\u5316\uff0c\u5982\u679c\u6709\u591a\u4e2a\u6784\u9020\u51fd\u6570\n\/\/ \u4e14\u90fd\u9700\u8981\u6267\u884c\u540c\u6837\u521d\u59cb\u5316\u53ef\u4ee5\u653e\u5728\u91cc\u9762\uff0c\u6ca1\u9700\u8981\u53ef\u4ee5\u4e0d\u5199 init\nclass ClassC\n{\n    init\n    {\n        println(&quot;C \u6267\u884c\u521d\u59cb\u5316&quot;)\n    }\n\n    \/\/ \u7528\u4e8c\u7ea7\u6784\u9020\u51fd\u6570\u5b9e\u73b0\u65e0\u53c2\u6784\u9020\u7684\u6548\u679c\n    constructor()\n    {\n        println(&quot;C \u65e0\u53c2\u6784\u9020\u51fd\u6570&quot;)\n    }\n\n    \/\/ \u7528\u4e8c\u7ea7\u6784\u9020\u51fd\u6570\u5b9e\u73b0\u6709\u53c2\u6784\u9020\u51fd\u6570\n    constructor(name: String, age: Int)\n    {\n        print(&quot;C \u6709\u53c2\u6784\u9020\u51fd\u6570\uff1a&quot;)\n        println(&quot;$name $age&quot;)\n    }\n}\n\nfun main()\n{\n    val ca = ClassA()\n    val cb1 = ClassB(&quot;\u5c0f\u660e&quot;, 20) \/\/ \u4e3b\u6784\u9020\u51fd\u6570\n    val cb2 = ClassB(&quot;\u5c0f\u5f20&quot;, 19, 1.77F) \/\/ \u4e8c\u7ea7\u6784\u9020\u51fd\u6570\n    val cc1 = ClassC() \/\/ \u65e0\u53c2\u6784\u9020\u51fd\u6570\n    val cc2 = ClassC(&quot;\u5c0f\u5f3a&quot;, 22)\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/11\/image-1700838544780.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 239px; --smush-placeholder-aspect-ratio: 239\/217;\" \/><\/p>\n<h3><span class=\"ez-toc-section\" id=\"463_%E4%BF%AE%E9%A5%B0%E7%AC%A6\"><\/span>4.6.3 \u4fee\u9970\u7b26<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<h4><span class=\"ez-toc-section\" id=\"4631_%E8%AE%BF%E9%97%AE%E6%9D%83%E9%99%90%E4%BF%AE%E9%A5%B0%E7%AC%A6\"><\/span>4.6.3.1 \u8bbf\u95ee\u6743\u9650\u4fee\u9970\u7b26<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<ul>\n<li>public\uff1a\u9ed8\u8ba4\u7684\u8bbf\u95ee\u6743\u9650\u4fee\u9970\u7b26\uff0c\u5982\u679c\u6ca1\u6709\u663e\u5f0f\u6307\u5b9a\u8bbf\u95ee\u6743\u9650\u4fee\u9970\u7b26\uff0c\u90a3\u4e48\u9ed8\u8ba4\u4e3apublic\u3002public\u4fee\u9970\u7684\u6210\u5458\u5728\u4efb\u4f55\u5730\u65b9\u90fd\u53ef\u89c1\u3002<\/li>\n<li>private\uff1aprivate\u4fee\u9970\u7684\u6210\u5458\u53ea\u5728\u5b9a\u4e49\u5b83\u7684\u7c7b\u4e2d\u53ef\u89c1\uff0c\u5176\u4ed6\u7c7b\u65e0\u6cd5\u8bbf\u95ee\u3002<\/li>\n<li>protected\uff1aprotected\u4fee\u9970\u7684\u6210\u5458\u5728\u5b9a\u4e49\u5b83\u7684\u7c7b\u4e2d\u548c\u5b83\u7684\u5b50\u7c7b\u4e2d\u53ef\u89c1\uff0c\u5176\u4ed6\u7c7b\u65e0\u6cd5\u8bbf\u95ee\u3002<\/li>\n<li>internal\uff1ainternal\u4fee\u9970\u7684\u6210\u5458\u5728\u540c\u4e00\u4e2a\u6a21\u5757\u4e2d\u53ef\u89c1\u3002\u6a21\u5757\u662f\u6307\u7f16\u8bd1\u5728\u4e00\u8d77\u7684\u4e00\u7ec4Kotlin\u6587\u4ef6\u3002<\/li>\n<\/ul>\n<p>C++ \u4e2d\u53ea\u6709 public\u3001private \u548c protected\uff0cJava \u4e2d\u6ca1\u6709 internal\uff0c\u4f46\u662f\u6709\u4e00\u4e2a default\uff0cdefault \u5728\u540c\u4e00\u4e2a\u5305\u91cc\u53ef\u89c1\uff0c\u4e5f\u662f\u4e0d\u4f7f\u7528\u4fee\u9970\u7b26\u65f6\u9ed8\u8ba4\u7684\u4fee\u9970\u7b26\uff0c\u800c Kotlin \u9ed8\u8ba4\u662f public\uff0c\u53ea\u4e0d\u8fc7\u611f\u89c9 Java \u7684 default \u548c Kotlin \u7684 internal \u5b9e\u9645\u610f\u4e49\u76f8\u8fd1\u3002<\/p>\n<h4><span class=\"ez-toc-section\" id=\"4632_%E7%B1%BB%E5%B1%9E%E6%80%A7%E4%BF%AE%E9%A5%B0%E7%AC%A6\"><\/span>4.6.3.2 \u7c7b\u5c5e\u6027\u4fee\u9970\u7b26<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<pre><code class=\"language-kotlin\">abstract    \/\/ \u62bd\u8c61\u7c7b  \nfinal       \/\/ \u7c7b\u4e0d\u53ef\u7ee7\u627f\uff0c\u9ed8\u8ba4\u5c5e\u6027\nenum        \/\/ \u679a\u4e3e\u7c7b\nopen        \/\/ \u7c7b\u53ef\u7ee7\u627f\nannotation  \/\/ \u6ce8\u89e3\u7c7b<\/code><\/pre>\n<h2><span class=\"ez-toc-section\" id=\"47_%E7%BB%A7%E6%89%BF%E4%B8%8E%E9%87%8D%E5%86%99\"><\/span>4.7 \u7ee7\u627f\u4e0e\u91cd\u5199<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"471_%E4%B8%80%E8%88%AC%E5%86%99%E6%B3%95\"><\/span>4.7.1 \u4e00\u822c\u5199\u6cd5<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Java \u4e2d\u7c7b\u9ed8\u8ba4\u53ef\u88ab\u7ee7\u627f\uff0cKotin \u4e2d\u9ed8\u8ba4\u4e0d\u53ef\u88ab\u7ee7\u627f<\/p>\n<pre><code class=\"language-kotlin\">\/\/ \u4f7f\u7528 open \u4ee3\u8868\u53ef\u4ee5\u88ab\u7ee7\u627f\n\/\/ \u4efb\u610f\u7c7b\u9ed8\u8ba4\u7ee7\u627f\u81ea Any\uff0c\u5982\u540c Java \u4e2d\u4efb\u610f\u7c7b\u7ee7\u627f\u81ea Object\nopen class Animal\n{\n    init\n    {\n        println(&quot;Animal \u521d\u59cb\u5316&quot;)\n    }\n\n    \/\/ \u4f7f\u7528 open \u4ee3\u8868\u53ef\u4ee5\u88ab\u91cd\u5199\n    open fun sound()\n    {\n        println(&quot;\u52a8\u7269\u53d1\u51fa\u53eb\u58f0&quot;)\n    }\n}\n\n\/\/ \u548c Java \u4e00\u6837\uff0c\u7c7b\u4e0d\u652f\u6301\u591a\u7ee7\u627f\nclass Dog : Animal()\n{\n    init\n    {\n        println(&quot;Dog \u521d\u59cb\u5316&quot;)\n    }\n\n    \/\/ \u91cd\u5199\u4f7f\u7528 override\n    override fun sound()\n    {\n\/\/        super.sound() \/\/ \u5982\u679c\u8981\u8c03\u7528\u7236\u7c7b\u7684\n        println(&quot;\u72d7\u53d1\u51fa\u53eb\u58f0&quot;)\n    }\n}\n\nfun main()\n{\n    val dog = Dog()\n    dog.sound()\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/11\/image-1700922585038.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 137px; --smush-placeholder-aspect-ratio: 137\/109;\" \/><\/p>\n<h3><span class=\"ez-toc-section\" id=\"472_%E5%AD%98%E5%9C%A8%E6%9E%84%E9%80%A0%E5%87%BD%E6%95%B0\"><\/span>4.7.2 \u5b58\u5728\u6784\u9020\u51fd\u6570<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<pre><code class=\"language-kotlin\">\/\/ \u7236\u7c7b\u6709\u4e3b\u6784\u9020\u51fd\u6570\u548c\u4e8c\u7ea7\u6784\u9020\u51fd\u6570\nopen class Animal(val name: String)\n{\n    \/\/ \u4e8c\u7ea7\u6784\u9020\u51fd\u6570\u9700\u8981\u4ee3\u7406\u8c03\u7528\u4e3b\u6784\u9020\u51fd\u6570 this()\n    constructor(name: String, age: Int) : this(name)\n\n    open fun sound()\n    {\n        println(&quot;\u52a8\u7269 $name \u53d1\u51fa\u53eb\u58f0&quot;)\n    }\n}\n\n\/\/ \u7ee7\u627f\u5e76\u8c03\u7528\u7236\u7c7b\u6784\u9020\u51fd\u6570\nclass Dog(name: String, private val age: Int) : Animal(name)\n{\n    \/\/ \u201c\u7c7b\u578b?\u201d\u8868\u793a\u503c\u53ef\u4ee5\u4e3a null\n    private var color: String? = null\n\n    \/\/ \u4e8c\u7ea7\u6784\u9020\u51fd\u6570\u9700\u8981\u4ee3\u7406\u8c03\u7528\u4e3b\u6784\u9020\u51fd\u6570\n    constructor(name: String, age: Int, color: String) : this(name, age)\n    {\n        this.color = color\n    }\n\n    override fun sound()\n    {\n        println(&quot;\u72d7 $name $age ${this.color} \u53d1\u51fa\u53eb\u58f0&quot;)\n    }\n}\n\nclass Cat : Animal\n{\n    \/\/ \u5b50\u7c7b\u53ef\u4ee5\u5728\u4e8c\u7ea7\u6784\u9020\u51fd\u6570\u4ee3\u7406\u8c03\u7528\u7236\u7c7b\u6784\u9020\u51fd\u6570\n\n    \/\/ \u8c03\u7528\u7236\u7c7b\u4e3b\u6784\u9020\u51fd\u6570\n    constructor(name: String) : super(name)\n\n    \/\/ \u8c03\u7528\u7236\u7c7b\u4e8c\u7ea7\u6784\u9020\u51fd\u6570\n    constructor(name: String, age: Int) : super(name, age)\n\n    override fun sound()\n    {\n        println(&quot;\u732b $name \u53d1\u51fa\u53eb\u58f0&quot;)\n    }\n}\n\nfun main()\n{\n    val dog1 = Dog(&quot;\u5c0f\u82b1&quot;, 5)\n    dog1.sound()\n\n    val dog2 = Dog(&quot;\u5c0f\u9ed1&quot;, 3, &quot;\u9ed1\u8272&quot;)\n    dog2.sound()\n\n    val cat1 = Cat(&quot;\u5c0f\u767d&quot;)\n    cat1.sound()\n\n    val cat2 = Cat(&quot;\u5c0f\u7070&quot;, 1)\n    cat2.sound()\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/11\/image-1700925074812.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 203px; --smush-placeholder-aspect-ratio: 203\/117;\" \/><\/p>\n<h3><span class=\"ez-toc-section\" id=\"473_%E5%B1%9E%E6%80%A7%E9%87%8D%E5%86%99\"><\/span>4.7.3 \u5c5e\u6027\u91cd\u5199<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<pre><code class=\"language-kotlin\">open class Animal\n{\n    open var name: String? = null\n}\n\nclass Dog : Animal()\n{\n    \/\/ val \u6ca1\u6709 setter \u65b9\u6cd5\n    \/\/ \u5373 var \u6bd4 val \u591a\u4e00\u4e2a setter \u65b9\u6cd5\n    \/\/ \u56e0\u6b64\u53ef\u4ee5\u7528 var \u91cd\u5199 val \u5c5e\u6027\uff0c\u53cd\u8fc7\u6765\u4e0d\u884c\uff08\u6211\u7ed9\u4f60\uff0c\u4f60\u88c5\u4e0d\u4e86\u53ef\u4ee5\u6254\u6389\u591a\u7684\uff1b\u4f60\u7ed9\u6211\uff0c\u6ca1\u90a3\u4e48\u591a\u90a3\u5c31\u88c5\u4e0d\u6ee1\uff09\n    \/\/ \u56e0\u4e3a\u90fd\u5177\u6709 getter \u65b9\u6cd5\uff0c\u6240\u4ee5\u8fd9\u4e2a\u65b9\u6cd5\u5fc5\u7136\u8981\u91cd\u5199\n    \/\/ \u5982\u679c\u5b50\u7c7b var \u5c5e\u6027\u662f\u91cd\u5199\u7684\uff0c\u4e14\u91cd\u5199\u4e86 setter \u65b9\u6cd5\uff0c\u90a3\u4e48\u7236\u7c7b\u4e5f\u5fc5\u987b\u662f var \u5c5e\u6027\uff08\u624d\u5177\u6709 setter \u65b9\u6cd5\uff09\n    override var name: String?\n        get() = &quot;\u52a8\u7269 &quot; + super.name \/\/ \u9700\u8981\u91cd\u5199 getter \u65b9\u6cd5\n        set(name)\n        {\n            super.name = name\n        }\n}\n\nfun main()\n{\n    val dog = Dog()\n    println(dog.name)\n    dog.name = &quot;\u5c0f\u767d&quot;\n    println(dog.name)\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/11\/image-1700926067816.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 117px; --smush-placeholder-aspect-ratio: 117\/86;\" \/><\/p>\n<h3><span class=\"ez-toc-section\" id=\"474_%E6%8A%BD%E8%B1%A1\"><\/span>4.7.4 \u62bd\u8c61<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u8fd9\u4e00\u70b9\u548c Java \u4e2d\u4e00\u6837\uff0c\u62bd\u8c61\u7c7b\u4e0d\u53ef\u5b9e\u4f8b\u5316\uff0c\u7236\u7c7b\u91cc\u9762\u58f0\u660e\u65b9\u6cd5\u539f\u578b\uff0c\u4e0d\u4f5c\u5177\u4f53\u5b9a\u4e49\uff0c\u5b50\u7c7b\u91cd\u5199<\/p>\n<pre><code class=\"language-kotlin\">\/\/ \u62bd\u8c61\u7c7b\u81ea\u5e26\u53ef\u88ab\u7ee7\u627f\u7684\u5c5e\u6027\nabstract class Animal\n{\n    abstract fun sound()\n}\n\nclass Dog : Animal()\n{\n    override fun sound()\n    {\n        println(&quot;\u72d7\u53d1\u51fa\u53eb\u58f0&quot;)\n    }\n}\n\nfun main()\n{\n    val dog = Dog()\n    dog.sound()\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/11\/image-1700926629496.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 92px; --smush-placeholder-aspect-ratio: 92\/63;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"48_%E6%8E%A5%E5%8F%A3\"><\/span>4.8 \u63a5\u53e3<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"481_%E5%A3%B0%E6%98%8E%E5%92%8C%E9%BB%98%E8%AE%A4%E5%AE%9E%E7%8E%B0\"><\/span>4.8.1 \u58f0\u660e\u548c\u9ed8\u8ba4\u5b9e\u73b0<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u548c Java \u4e00\u6837\uff0c\u63a5\u53e3\u4e2d\u53ef\u4ee5\u58f0\u660e\u62bd\u8c61\u65b9\u6cd5\uff0c\u4e5f\u53ef\u4ee5\u505a\u9ed8\u8ba4\u65b9\u6cd5\u5b9e\u73b0<\/p>\n<pre><code class=\"language-kotlin\">interface IMyInterface\n{\n    fun bar()\n\n    fun boo()\n    {\n        println(&quot;boo \u9ed8\u8ba4\u5b9e\u73b0&quot;)\n    }\n}\n\nclass Child : IMyInterface\n{\n    override fun bar()\n    {\n        println(&quot;bar \u91cd\u5199\u5b9e\u73b0&quot;)\n    }\n}\n\nfun main()\n{\n    val c = Child()\n    c.boo()\n    c.bar()\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/11\/image-1700993490549.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 135px; --smush-placeholder-aspect-ratio: 135\/82;\" \/><\/p>\n<h3><span class=\"ez-toc-section\" id=\"492_%E5%B1%9E%E6%80%A7\"><\/span>4.9.2 \u5c5e\u6027<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<pre><code class=\"language-kotlin\">interface IMyInterface\n{\n    \/\/ \u63d0\u4f9b\u8bbf\u95ee\u5668\u7684\u5b9e\u73b0\n    val x: String\n        get() = &quot;xxx&quot;\n\n    \/\/ \u62bd\u8c61\u5c5e\u6027\u58f0\u660e\n    var y: String?\n    val z: String\n}\n\nclass Child : IMyInterface\n{\n    \/\/ \u91cd\u5199\u5c5e\u6027\n    override var y: String? = null\n        set(value)\n        {\n            field = &quot;y: $field&quot;\n        }\n\n    override val z: String = &quot;\u4f60\u597d\uff0c\u4e16\u754c\uff01&quot;\n}\n\nfun main()\n{\n    val c = Child()\n    c.y = &quot;\u4e16\u754c\uff0c\u4f60\u597d\uff01&quot;\n    println(c.x)\n    println(c.y)\n    println(c.z)\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/11\/image-1701003717991.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 116px; --smush-placeholder-aspect-ratio: 116\/94;\" \/><\/p>\n<h3><span class=\"ez-toc-section\" id=\"492_%E5%A4%9A%E7%BB%A7%E6%89%BF\"><\/span>4.9.2 \u591a\u7ee7\u627f<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u5c3d\u7ba1\u548c Java \u4e00\u6837\uff0c\u7c7b\u4e0d\u652f\u6301\u591a\u7ee7\u627f\uff0c\u4f46\u662f\u591a\u4e2a\u63a5\u53e3\u53ef\u4ee5\u88ab\u4e00\u4e2a\u7c7b\u7ee7\u627f\uff0c\u63a5\u53e3\u53ef\u4ee5\u7ee7\u627f\u63a5\u53e3<\/p>\n<pre><code class=\"language-kotlin\">interface A\n{\n    \/\/ \u9ed8\u8ba4\u5b9e\u73b0\n    fun foo()\n    {\n        println(&quot;A foo&quot;)\n    }\n\n    \/\/ \u62bd\u8c61\u51fd\u6570\u58f0\u660e\n    fun bar()\n}\n\ninterface B\n{\n    fun foo()\n    {\n        println(&quot;B foo&quot;)\n    }\n\n    fun bar()\n    {\n        println(&quot;B bar&quot;)\n    }\n}\n\n\/\/ \u63a5\u53e3\u7ee7\u627f\uff0c\u7236\u63a5\u53e3\u4e2d\u7684\u9ed8\u8ba4\u5b9e\u73b0\u548c\u62bd\u8c61\u58f0\u660e\u53ef\u4ee5\u91cd\u5199\u4e5f\u53ef\u4ee5\u4e0d\u91cd\u5199\ninterface C : A\n{\n    override fun foo()\n    {\n        println(&quot;foo C \u91cd\u5199 A&quot;)\n    }\n\n    override fun bar()\n    {\n        println(&quot;bar C \u91cd\u5199 A&quot;)\n    }\n}\n\n\/\/ \u4ece A \u5230 C \u5230 D \u4e3a\u6b62\uff0cA \u4e2d\u6240\u6709\u65b9\u6cd5\u90fd\u6709\u4e86\u9ed8\u8ba4\u5b9e\u73b0\uff0cD \u53ef\u4ee5\u4e0d\u91cd\u5199\nclass D : C\n{\n\n}\n\n\/\/ A \u4e2d bar \u6ca1\u6709\u9ed8\u8ba4\u5b9e\u73b0\uff0c\u7ee7\u627f\u540e\u5fc5\u987b\u91cd\u5199\nclass E : A\n{\n    override fun bar()\n    {\n        println(&quot;bar E \u91cd\u5199 A&quot;)\n    }\n}\n\n\/\/ \u591a\u7ee7\u627f\n\/\/ \u7236\u63a5\u53e3\u6709\u76f8\u540c\u65b9\u6cd5\u540d\u7684\u9700\u8981\u91cd\u5199\nclass F : A, B\n{\n    override fun foo()\n    {\n        \/\/ \u53ef\u4ee5\u9009\u62e9\u8c03\u7528\u7236\u63a5\u53e3\u7684\u9ed8\u8ba4\u5b9e\u73b0\uff0c\u4e5f\u53ef\u4ee5\u81ea\u5b9a\u4e49\n        \/\/ super&lt;A&gt;.foo()\n        \/\/ super&lt;B&gt;.foo()\n        println(&quot;foo F \u91cd\u5199 A \u548c B&quot;)\n    }\n\n    override fun bar()\n    {\n        println(&quot;bar F \u91cd\u5199 A \u548c B&quot;)\n    }\n}\n\nfun main()\n{\n    var d = D()\n    d.foo()\n    d.bar()\n\n    val e = E()\n    e.foo()\n    e.bar()\n\n    val f = F()\n    f.foo()\n    f.bar()\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/11\/image-1701005961946.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 178px; --smush-placeholder-aspect-ratio: 178\/174;\" \/><\/p>\n<h3><span class=\"ez-toc-section\" id=\"493_%E5%87%BD%E6%95%B0%E5%BC%8F%E6%8E%A5%E5%8F%A3\"><\/span>4.9.3 \u51fd\u6570\u5f0f\u63a5\u53e3<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u53ea\u6709\u4e00\u4e2a\u62bd\u8c61\u65b9\u6cd5\u7684\u63a5\u53e3\u79f0\u4e3a\u51fd\u6570\u5f0f\u63a5\u53e3<\/p>\n<pre><code class=\"language-kotlin\">fun interface Calculator\n{\n    fun foo(a: Int, b: Int): Int\n}\n\nfun main()\n{\n    val add: Calculator = Calculator { a, b -&gt; a + b }\n    val sub: Calculator = Calculator { a, b -&gt; a - b }\n\n    println(add.foo(4, 6))\n    println(sub.foo(12, 10))\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/11\/image-1701011436427.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 89px; --smush-placeholder-aspect-ratio: 89\/84;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"49_%E6%89%A9%E5%B1%95\"><\/span>4.9 \u6269\u5c55<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u5b9e\u9645\u7528\u5904\u611f\u89c9\u548c Python \u4e2d\u7684\u88c5\u9970\u5668\u5dee\u4e0d\u591a\uff0c\u53ef\u4ee5\u5728\u4e0d\u4fee\u6539\u539f\u4ee3\u7801\u7684\u57fa\u7840\u4e0a\u8fdb\u884c\u6269\u5c55\u529f\u80fd<\/p>\n<pre><code class=\"language-kotlin\">    \/\/ \u81ea\u5b9a\u4e49\u7c7b\n    class Rectangle(val width: Int, val height: Int)\n\n    \/\/ \u6269\u5c55\u51fd\u6570\n    fun Rectangle.isSquare(): Boolean\n    {\n        return width == height\n    }\n\n    \/\/ \u6269\u5c55\u5c5e\u6027\n    val Rectangle.area: Int\n        get() = width * height\n\n    \/\/ \u4f7f\u7528\u6269\u5c55\u51fd\u6570\u548c\u6269\u5c55\u5c5e\u6027\n    fun main()\n    {\n        val rectangle1 = Rectangle(5, 5)\n        val rectangle2 = Rectangle(4, 6)\n\n        println(rectangle1.isSquare()) \/\/ \u8f93\u51fa\uff1atrue\n        println(rectangle2.isSquare()) \/\/ \u8f93\u51fa\uff1afalse\n\n        println(rectangle1.area) \/\/ \u8f93\u51fa\uff1a25\n        println(rectangle2.area) \/\/ \u8f93\u51fa\uff1a24\n    }<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/11\/image-1701011929405.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 106px; --smush-placeholder-aspect-ratio: 106\/133;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"410_%E6%95%B0%E6%8D%AE%E7%B1%BB\"><\/span>4.10 \u6570\u636e\u7c7b<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<pre><code class=\"language-kotlin\">\/\/ \u5bf9\u4e8e\u6570\u636e\u7c7b\u7684\u4e3b\u6784\u9020\u5668\u4e2d\u5b9a\u4e49\u7684\u5c5e\u6027\n\/\/ \u63d0\u4f9b\u4e86\u9ed8\u8ba4\u7684 toString\u3001equals\u3001copy \u7b49\u5b9e\u73b0\ndata class ClassA(val name: String, val age: Int)\n{\n    var height: Float = 0F\n\n    fun myToString(): String\n    {\n        return &quot;ClassA(name=$name, age=$age, height=${this.height})&quot;\n    }\n}\n\nfun main()\n{\n    val ca1 = ClassA(&quot;\u5c0f\u660e&quot;, 20)\n    ca1.height = 1.7F\n    val ca2 = ca1.copy(name = &quot;\u5c0f\u5f3a&quot;) \/\/ copy \u9ed8\u8ba4\u5b9e\u73b0\n    println(ca1) \/\/ toString \u9ed8\u8ba4\u5b9e\u73b0\n    println(ca2)\n    println(ca1.myToString()) \/\/ toString \u81ea\u5b9a\u4e49\u5b9e\u73b0\n    println(ca2.myToString())\n    println(ca1 == ca2) \/\/ equals \u9ed8\u8ba4\u5b9e\u73b0\n}<\/code><\/pre>\n<h2><span class=\"ez-toc-section\" id=\"411_%E4%BC%B4%E7%94%9F\"><\/span>4.11 \u4f34\u751f<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Kotlin \u4e2d\u6ca1\u6709 static\uff0c\u4f46\u662f\u5b58\u5728\u4f34\u751f\u5bf9\u8c61\uff0c\u4f5c\u7528\u7c7b\u4f3c static<\/p>\n<pre><code class=\"language-kotlin\">class ClassA\n{\n    companion object\n    {\n        const val value = 1\n\n        fun test1()\n        {\n            println(&quot;test1&quot;)\n        }\n\n        \/\/ \u5728 Kotlin \u4e2d\uff0c\u8c03\u7528 test1 \u548c test2 \u6ca1\u533a\u522b\n        \/\/ \u4f46\u662f\u5982\u679c\u662f Java \u6765\u8c03\u7528\uff0c\u5219\u6ca1\u6709\u6ce8\u89e3\u7684\u9700\u8981\u901a\u8fc7 \u7c7b\u540d.companion \u624d\u884c\n        @JvmStatic\n        fun test2()\n        {\n            println(&quot;test2&quot;)\n        }\n    }\n}\n\nfun main()\n{\n    println(ClassA.value)\n    ClassA.test1()\n    ClassA.test2()\n    ClassA.Companion.test1()\n    ClassA.Companion.test2()\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/11\/image-1701095951892.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 127px; --smush-placeholder-aspect-ratio: 127\/164;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"412_%E6%9E%9A%E4%B8%BE%E7%B1%BB\"><\/span>4.12 \u679a\u4e3e\u7c7b<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<pre><code class=\"language-kotlin\">enum class Color\n{\n    RED, GREEN, BLUE\n}\n\n\/\/ \u5305\u542b\u5c5e\u6027\u65b9\u6cd5\nenum class Direction(val value: Int)\n{\n    NORTH(0),\n    EAST(90),\n    SOUTH(180),\n    WEST(270);\n\n    fun getDescription(): String\n    {\n        return when (this)\n        {\n            NORTH -&gt; &quot;\u5411\u5317&quot;\n            EAST -&gt; &quot;\u5411\u4e1c&quot;\n            SOUTH -&gt; &quot;\u5411\u5357&quot;\n            WEST -&gt; &quot;\u5411\u897f&quot;\n        }\n    }\n}\n\nfun main()\n{\n    val color = Color.GREEN\n    println(color)\n\n    val direction = Direction.EAST\n    println(direction.getDescription())\n    println(direction.value)\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/11\/image-1701096741882.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 104px; --smush-placeholder-aspect-ratio: 104\/112;\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>1 \u524d\u8a00 \u51c6\u5907\u5165 Android\uff0c\u62bd\u7a7a\u4e86\u89e3\u4e00\u4e0b Kotlin \u8bed\u6cd5\u3002 2 \u73af\u5883 JDK 17.0.9 Kotl [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"zakra_page_container_layout":"customizer","zakra_page_sidebar_layout":"customizer","zakra_remove_content_margin":false,"zakra_sidebar":"customizer","zakra_transparent_header":"customizer","zakra_logo":0,"zakra_main_header_style":"default","zakra_menu_item_color":"","zakra_menu_item_hover_color":"","zakra_menu_item_active_color":"","zakra_menu_active_style":"","zakra_page_header":true,"_lmt_disableupdate":"no","_lmt_disable":"no","footnotes":""},"categories":[1,584],"tags":[],"class_list":["post-12060","post","type-post","status-publish","format-standard","hentry","category-all","category-java-kotlin"],"modified_by":"IYATT-yx","_links":{"self":[{"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=\/wp\/v2\/posts\/12060","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=12060"}],"version-history":[{"count":0,"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=\/wp\/v2\/posts\/12060\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=12060"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=12060"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=12060"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}