Part4 Java&kotlin 数据成员的初始化

“云朵喝了酒,晚霞上了头”~ 慢慢的认识世界,慢慢的理解生活。我们一路向前,对数据成员的初始化是程序向前的底气、运行的基础😜~ 快来开始今天的学习之旅吧~

一、getter & setter方法

🔅Pick 1->为什么要有getter和setter方法?

为了保障程序的安全性,我们常常会将类中的一些成员定义为private属性,而类的外部无法实现对private属性成员的直接访问,因此需要setter和getter方法以实现在类的外部对【私有成员属性的值】的设置和获取。

class Person1 {
    /*
    系统此时已完成:
    1.创建name时内部对应的属性field用于存值。
    2.提供setter方法
    3.提供getter方法
     */
    var name:String=""
    var age:Int=0
    var tag:String=""
}

🔅Pick 2->属性的setter和getter方法何时需要重写?

★setter():
①外部给值时需要进行额外的处理。
②捕获外部给值的时机。
★getter():
①外部获取值时需要进行额外的处理。
②捕获外部需要的时机。
③懒加载。[对象创建的同时不赋予初值,需要使用的时候(被调用时)再赋值,
此时在getter中赋值]

class Person{
var age:Int=0
set(value) = println(value)

//    set(value) {
//            tag = if(age in 1..18){
//                "未成年"
//            }else{
//                "成年人"
//            }
//            //需要把age的值存到其内部属性才能实现真正的存储
//            field = value
//        }
}

🔅Pick 3->调用getter和setter方法只有通过getAge(),setAge()形式访问,
return和赋值语句无法调用。

class Person{
        var age=0
        /*
        get里不能调用get方法; set不能调用set方法
        ->会出现死循环
        例:
        get(){
        return age    //报错,返回语句默认调用了get方法,get方法里调用了get方法
        }
        set(value){
        age=20       //报错,赋值语句默认调用set方法。即set方法里调用了set方法
        filed=value
        }
         */
}

🔅Pick 4->实现内部可以改变数据(赋值),外部只可访问、不可赋值。
👉 私有化set方法

class Person{
var age:Int=0
    private set
}

二、延迟初始化( lateinit)

🔅Pick 1->适用情况:
一个变量必须有值 但定义时不确定赋予其什么值

🔅Pick 2->注意事项
①在使用该变量前必须赋值
②只能修饰var变量

🔅Pick 3->语法格式

class Person1{
//延迟初始化只适用于var类型的数据
 lateinit var name:String
}

三、懒加载 (by lazy)

🔅Pick 1->适用情况:只适用于val数据 不适用于var数据
(此时数据只能被初始化一次 & lazy里未提供set方法)

🔅Pick 2->注意事项:懒加载只会调用一次 后续访问的是变量的值

🔅Pick 3->语法格式

class Person1{
//name1只初始化1次,只能用于val数据
val name1:String by lazy {
//输出提示信息测试
        println("在调用lazy")
        "jack"
    }
}

四、static属性/方法

在真正了解到静态属性与静态方法前,我们先解决下面两个问题:

Q1->什么时候需要对象?
·需要存数据的时候
·只有对象才能完成某些功能时

Q2->什么是实例方法(对象方法)?
·必须有对应这个类的对象才能调用的方法
·缺点:必须要创建对象并通过对象名访问
优点:有这个对象 可对该对象的数据进行操作

在理解对象方法之后相信大家都会有这么一个疑问:对象方法和静态方法有什么区别呢?请听这回分解😜

🔅Pick 1->静态方法/静态属性的适用情况
·该方法不需要访问类中数据成员和这个类的实例方法。
·在项目的多个模块、多个类中使用,不希望创建对象就可直接使用某个类的方法
[直接通过类名访问 不需要创建对象]

🔅Pick 2->静态的特点
·当类被加载到内存中时,静态的属性和方法同时被加载。
此时类和静态属性、静态方法同时存在,可直接使用类名访问。

🔅Pick 3->静态与实例方法的访问
---静态方法不能访问类的属性或者实例方法;
[静态方法被加载时,对象不存在,故无法访问]
---实例方法可以访问静态属性或静态方法。
[类被加载时,静态方法和静态属性同时被加载
创建对象之后二者依旧存在,故可以访问其静态内容]

🔅Pick 4->静态的声明
Java->static
kotlin->伴生对象 companion object

//Java使用static关键字
class Test{
 static String s="";
}
//Kotlin中没有static关键字,使用伴生对象实现静态化
class Person3{
    companion object{
        @JvmStatic//加上之后使test()本身成为静态方法,
                  // 不加时是通过静态的Companion类访问非静态的test方法
        fun test()= println()
    }

五、结语

★getter & setter->对类中私有属性的值得设置和获取
“你能干啥?干啥啥不行?设值获值啥都行😋”

★延迟初始化->一定有值,定义时不确定
lateinit var 说:别着急,总会有哒🌹~

★懒加载->数据只能被初始化一次,定义时不确定赋予什么值
比较lazy,喜欢val
只想做个咸鱼,初始化一次就躺平🙃

★静态属性/方法->不用通过对象调用,一经变动,全局皆动
“别担心,一直都在~”🤗

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,548评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,497评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,990评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,618评论 1 296
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,618评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,246评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,819评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,725评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,268评论 1 320
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,356评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,488评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,181评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,862评论 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,331评论 0 24
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,445评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,897评论 3 376
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,500评论 2 359

推荐阅读更多精彩内容