第5章-第3节-Java面向对象的封装以及局部变量、this、static

1、局部变量

【问题1】:什么是局部变量?
答:定义在局部位置的变量就是局部变量。

【问题2】:什么是局部位置?
答:方法的形参位置、方法体的内部。

【位置关系图】:
class Xxx {
    //成员位置
    public ...(局部位置) {
        //局部位置
    }
    //成员位置
}

作用:限制变量的使用范围


成员变量和局部变量的区别:

1)、代码定义位置

成员变量:定义在类的成员位置;
局部变量:定义在类的局部位置;

2)、作用域

成员变量:作用域大,可以在整个class的大括号内部被使用;
局部变量:作用域小,只能在定义的作用范围内被使用;

3)、内存所在位置

成员变量:在堆中;
局部变量:在栈中;

4)、默认值

成员变量:有默认值;
局部变量:没有默认值;

5)、生命周期现象

成员变量:随着对象在堆中被创建也一并生成,随着对象被gc回收一并被清理;
局部变量:随着方法进栈在栈中创建空间区域,随着方法的弹栈也一并被回收;


2、类和对象的关系

搭建场景:

    对象:某人、某车、某房子...

    类型:老师(Teacher)

类型:
    由多个对象共性内容进行抽取得到的抽象描述,称为:类型;
    类可以理解为一张设计图,创建对象的模板。

对象:
    通过类的实例化得到,在内存中占用资源 ==> 实实在在的个体;
    一旦得到了对象就可以访问类中的成员完成需求。


3、面向对象特性之封装性

生活层面:食品、快递、机箱...

作用:提高安全性

程序层面:
    1)、类、方法
    2)、私有化与隐藏

关键字:private
实例化对象完毕后,使用对象名.属性名的方式为对象属性进行显示赋值操作,
很有可能赋的值会违背生活的逻辑和常态 ==> 数据不安全
所以我们考虑没收外界对象名访问属性的权利,私有化该属性 ==> 使用private修饰
在本类中提供外界访问属性的一组公共的方法(getter&setter)
格式如下:
    getter方法
        public 数据类型 get属性名(){
            return 属性名;
        }

    setter方法
        public void set属性名(数据类型 形参名){
            属性名 = 形参名;
        }

举例:
    属性:private double money;

    getter方法:
        public double getMoney(){
            return money;
        }

    setter方法:
        public void setMoney(double m){
            money = m;
        }

【结论】:
    在之后的学习和开发环境下,绝大多数情况,类中的属性都需要被私有化,
    并且提供对应的getter&setter方法,记住:上述两个方法内部都不需要提供数据合理性校验操作


4、this关键字

使用在三个领域/三个作用:

1)、记录了正在被创建或者已经创建完毕对象的内存地址;
2)、区分同名的成员变量和局部变量;
3)、本类重载构造方法之间相互调用。

5、this关键字

第三个作用:本类构造方法之间相互调用

格式:
    this(...);

注意:
    1)、构造方法内部调用本类重载构造,只能在首行位置进行调用
    2)、构造方法之间相互调用不能形成闭合回路


6、static关键字

解释:静态的

核心理解:
    1)、静态的成员和类有关,非静态的成员和对象有关;
    2)、类加载要远远早于对象加载 ==> 先有类,后有对象;
    3)、早出现的不能调用晚出现的,晚出现的可以调用早出现的。

修饰的领域:

1)、修饰方法

称为:静态方法、类方法


格式:
    类名.静态方法名(...);

好处:
    不依赖于对象,即不需要创建对象,类名直接调用
    理解:
        1)、代码定义更加简洁;
        2)、更加节省内存资源,提高开发效率。

【问题】:什么方法需要设计为静态方法,什么方法需要设计为非静态方法?
      答:在设计自定义方法的过程中:
      发现方法体中不需要访问调用非静态成员(属性、方法),则该方法可以设计为静态方法,
      返之一旦方法体中有访问调用非静态成员(属性、方法),则该方法就必须设计为非静态方法。


2)、修饰属性

称为:静态属性、类属性

访问静态属性的格式:
    类名.静态属性名

好处:
    静态属性和类有关,不依赖于对象,不需要创建对象
    理解:
        1)、代码定义更加简洁;
        2)、更加节省内存资源,提高开发效率。

【问题】:什么属性可以被定义为静态属性,什么属性可以被定义为非静态属性?
      答:某属性对于该类所有对象都是唯一的值,则该属性可以被定义为静态属性;
      否则就必须定义为非静态属性。

注意:对于有父子继续关系的类,静态成员和非静态成员一样,访问的时候并不一定非要带上类,访问的时候遵循就近原则。

本电子书目录:《Java基础的重点知识点全集》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zwarwolf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值