【Java】封装性、变量分类、构造方法、值传递与引用传递内存模型

封装性

  1. 封装性是面向对象思想的三大特征之一
  2. 封装就是隐藏实现细节,对外提供访问接口
    属性的封装、方法的封装、类的封装、组件的封装、模块化封装、系统级封装
    优点: 模块化、信息隐藏、代码重用、插件化易于调试、具有安全性
    缺点: 执行效率受到影响
/*
如果属性有封装,那么在本类之外创建对象后,可以直接访问属性
private关键字:访问权限修饰符,public表示公有,private表示私有,私有的属性与方法
,只能在本类中访问
公有的属性和方法,可以被类外部的其他类访问,想要在类外部访问私有属性,我们需要提
供公有的方法间接访问
通常在一个类中,属性都私有化,并对外提供get and set方法
*/
public class Qianfeng {
    public static void main(String[] args) {
        Person p1 = new Person();
        //p1.name = "   ";   //error
        //p1.age = 21;       //error
        p1.setName("   ");
        p1.setAge(21);
    } 
}
class Person{
    //属性的封装
    private String name; //成员变量
    private int age;	 //成员变量
    //对外提供一个设置name属性的方法
    public void setName(String name){
        this.name = name;
    }
    //对外提供一个获取name属性的方法
    public String getName(){
        return this.name;
    }
    public void setAge(int age){
        this.age = age;
    }
    public int setAge(){
        return this.age;
    }
}

成员变量与局部变量

成员变量局部变量
类中位置类中定义在方法中定义或者为方法的参数
内存中位置在堆内存中(成员变量属于对象,对象进堆内存)在栈内存中(局部变量属于方法,方法进栈内存)
生命周期随着对象的创建而存在,随着对象的销毁而消失随着方法的调用而存在,随着方法的调用完毕而消失
初始化值有默认初始化值,引用类型默认为null没有默认初始化值,需要定义、赋值才能使用

局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。

构造方法

class Dog{
    private String name;
    private int age;
    public Dog(){
        System.out.println("无参构造");
    }
    public Dog(String name){
        this.name = name;
        System.out.println("单参构造");
    }
    public Dog(String name,int age){
        this(name);//调用其他构造方法时,此语句需要在第一句,在构造方法相互调用时必须存在出口(避免双向调用死循环)
        this.age = age;
        System.out.println("双参构造");
    }
}

小结
在这里插入图片描述

*值传递与引用传递

  1. 值传递内存模型
    在这里插入图片描述
    在这里插入图片描述

  2. 引用传递内存模型
    在这里插入图片描述
    在这里插入图片描述

  3. String传递内存模型1
    在这里插入图片描述
    在这里插入图片描述
    ***写时拷贝技术

  4. String传递内存模型2(String对象内置于对象内)
    在这里插入图片描述
    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

青锋杨

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

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

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

打赏作者

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

抵扣说明:

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

余额充值