網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
只要是面向?qū)ο蟮木幊陶Z(yǔ)言,基本上都有類Class
的用法,只是好不好用,好不好記而已,面向?qū)ο笫?code>c++開(kāi)始引入的,但是c++
關(guān)于類的東西,弄的太復(fù)雜,其實(shí)在真正的項(xiàng)目中,很少用到非常多復(fù)雜的概念。
Kotlin
是一種追求簡(jiǎn)潔的語(yǔ)言,在類上也下了不少功夫,放棄了很多c++
中類非常復(fù)雜的概念,其實(shí)對(duì)于類可以這樣來(lái)理解,為了復(fù)用的方便性和完整性,我們把變量和函數(shù)組合在一起,形成了類的概念。
類的初始化和使用
Kotlin
中類的定義也是非常的簡(jiǎn)單的,沒(méi)有太多的概念需要說(shuō)明,對(duì)于類的定義更多的其實(shí)可以參考函數(shù)和變量。
class AutoMobile(name:String) { init { println(name) } fun Driver(){ println("前驅(qū)") } }
我們用class
定義了一個(gè) AutoMobile
的類,這個(gè)類可以接受一個(gè)參數(shù) name
,類初始化的時(shí)候是從 init
開(kāi)始的。
對(duì)比與c++
的語(yǔ)言,Kotlin
完成一個(gè)類是非常簡(jiǎn)單的,對(duì)于需要簡(jiǎn)單使用類的編程人員,是不需要了解 c++
的構(gòu)造函數(shù),析構(gòu)函數(shù),就能完成一個(gè)類的編寫(xiě)。
我們可以這樣的使用他。
var auto:AutoMobile = AutoMobile("大眾") auto.Driver()
像調(diào)用一個(gè)函數(shù)一樣,我們初始化了 auto:AutoMobile
,帶了一個(gè)name
的參數(shù)。也許 c++
顧忌得太多,才是類的用法變得非常的復(fù)雜。這里不需要public
的聲明,因?yàn)槟J(rèn)都是公開(kāi)的,在寫(xiě)項(xiàng)目的時(shí)候,除非有一些特別的函數(shù)或者變量不讓人知道以后,大部分的情況都是公開(kāi)的。
我一直都覺(jué)得,屬性獲取方法與設(shè)置方法 那是非常奇怪的一種編程方式,每次看到c#
或者 java
代碼中,一大堆 getxxxx(),setxxxx()
,覺(jué)得都大可不必,這種編程方式只會(huì)耗盡程序員的心血,換不回來(lái)程序的可讀性和穩(wěn)定性。
繼承
就有類有了這個(gè)繼承的作用,才出現(xiàn)了這么多的設(shè)計(jì)模式,也可以說(shuō),它降低了程序設(shè)計(jì)的復(fù)雜度。但是類的繼承,其實(shí)用好了,不是那么的簡(jiǎn)單。
我們定義了一個(gè)Car
的類,繼承了AutoMobile
class Car(name:String):AutoMobile(name) { init { println(name) } }
被繼承的,也繼承了他的參數(shù),這點(diǎn)確實(shí)有點(diǎn)意思,可以少寫(xiě)很多代碼。AutoMobile代表的是基類,需要在前面聲明一個(gè)關(guān)鍵字open`。
當(dāng)然 Kotlin
抽象類,關(guān)鍵字為abstract
和接口關(guān)鍵字為interface
,這里就不做詳談。
小結(jié)
面向?qū)ο蟮木幊陶Z(yǔ)言,就是有了對(duì)象,才是得大工程,大項(xiàng)目的組織方式變得越來(lái)越簡(jiǎn)單,使用好類可以設(shè)計(jì)出很好的代碼框架,當(dāng)然類的使用看起來(lái)簡(jiǎn)單,真正的要做好,做好框架并不是那么簡(jiǎn)單的。
原文鏈接:https://blog.csdn.net/weixin_40425640/article/details/127846019
相關(guān)推薦
- 2022-08-19 Exception evaluating SpringEL expression異常處理
- 2023-01-11 Pytorch可視化(顯示圖片)及格式轉(zhuǎn)換問(wèn)題_python
- 2021-12-19 C語(yǔ)言?八大排序算法的過(guò)程圖解及實(shí)現(xiàn)代碼_C 語(yǔ)言
- 2023-07-03 前端面試中遇到的垂直居中問(wèn)題
- 2022-10-17 使用docker部署django的詳細(xì)步驟_docker
- 2022-05-22 C++11?中的override詳解_C 語(yǔ)言
- 2022-12-03 FFmpeg?Principle學(xué)習(xí)new_video_stream添加視頻輸出流_Android
- 2022-06-09 ASP.NET?Core使用EF創(chuàng)建模型(必需和可選屬性、最大長(zhǎng)度、并發(fā)標(biāo)記、陰影屬性)_實(shí)用技巧
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門(mén)
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支