java面向对象三大特性之一:封装

一、什么是封装

把属性和方法的获取和设置进行限制

二、为什么要封装

防止用户不合实际的输入,让程序更符合实际

比如:

让用户输入年龄,如果不对用户进行限制,那么用户可以输入-10这样的不符合实际的数,所以要对用户的输入进行限制

一方面提高了数据的安全性,另一方面也让程序更贴合实际,避免用户的不合法输入

三、封装的步骤

1、private 修饰
2、getter和setter设置
3、在setter方法里面进行限制

四、封装涉及的内容

1、this关键字

1.1 是什么

表示当前的,用来修饰属性、方法、构造方法(放首行)

1.2 什么时候用

和封装一起搭配用
要调用当前的属性、方法和构造方法的时候用

1.3 怎么用

//调用属性
this.属性名

//调用方法
this.方法名

//调用构造方法
this();

注:
①调用构造方法必须放在第一行
②this不能和static联用

2、static关键字

2.1 含义

静态的
共享的

2.2 特点

随着类的加载和加载
修饰的属性和方法的执行优先级高于其他普通方法和属性
static修饰的属性和方法属于类的

2.3 为什么要有static

节省内存空间,把同样的东西拿出来放在一个空间里让大家共享

2.4 怎么用

类名.属性名
类名.方法名

修饰属性:静态属性
修饰方法:静态方法
修饰代码块:静态代码块

//静态代码块
static {
	//把要共享的东西全部放在这里
	//注意不能含有this关键字
}

2.5 什么时候用

需要共享某个属性和方法的时候用

例如:类Student中有个共享属性country

public class Student {
    //static的使用
    String name;
    int age;
    static String country;//静态属性
    public Student(){}
    public Student(String name, int age, String country) {
        this.name = name;
        this.age = age;
        this.country = country;
    }
 public void show4() {
        System.out.println("Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", country='" + country + '\'' +
                '}');

    }
}

Test类

 public static void main(String[] args) {
        Student student1 = new Student("赵丽颖", 30, "中国");
        Student student2 = new Student("易烊千玺", 23, "中国");
        Student student3= new Student("吴磊", 25, "美国国");
        student1.show4();
        student2.show4();
        student3.show4();

    }

运行结果:
在这里插入图片描述

之所以country值都一样是因为,创建最后一个对象的时候,给country赋值了美国国。

而前两个对象和最后一个对象指向的country值都一样,是同一个地址空间,所以前两个对象对应的country值也是美国国。

可以借助下面的图理解:
在这里插入图片描述

2.6 静态方法VS普通方法

静态方法不能调用普通方法

普通方法可以调用静态方法

(因为前面说过了static修饰的是随着类的加载而加载的,且执行优先级高于其他的普通属性和方法。

所以静态方法调用普通方法的时候,普通方法还没加载,肯定是调用不了的。

而普通方法调用静态方法的时候,静态方法已经被加载了,所以可以调用的)

3、类的默认机制:构造方法

没有写无参构造,创建无参对象则会默认加载一个无参构造方法

如果调用了有参构造,那么不会默认调用一个无参构造

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值