2.2JAVA语法基础-封装

目录

一、包(package)

1.1包的概念

1.2包的作用

1.3如何使用包

1.3.1定义包

1.3.2导入包(其实本质是导入包中的类)

二、封装

2.1什么是封装

2.2封装的作用

2.3怎么封装

2.4封装的注意事项

三、this引入

3.2this的使用 

3.3this的注意和小结

3.3.1用途

3.3.2this注意事项:


一、包(package)

1.1包的概念

可以简单的理解为一个文件夹

1.2包的作用

前面说了我们写的一行行代码多了可以用方法装起来,方法多了可以用类将方法装起来,而类多了后呢,就用包将一个个的类给装起来

比如,腾讯视频上面有很多电影,但是如果他没有给电影分类的话我们就很难找到我们想看的电影,所以这就把包的重要性体现出来了。

1.3如何使用包

1.3.1定义包

包命名规范:

一般是公司域名反过来写+项目名+模块名字+子模块名

包名中应该全部都是英文,并且是小写的

例如 : rst.com 域名 org.lisang.项目名.子模块名

package com.rst.erp.oa.domain;自动化办公

package com.rst.erp.sa.entity; 系统管理

注意:不要写成nc.

1.3.2导入包(其实本质是导入包中的类)

导入包的语法 : import 包名.子包名.类名;

现在用eclipse工具自动导包,快捷键:ctrl + shift + o

注意:

  1. 导入包\的代码应该在声明包(就是该类所在的包)的后面,声明类的前面

  2. import java.util.*; 表示导入本包中所有会使用到的,util包中的类;

    只会导入util包下面直接的类型,不包括util包的子包中的类型

  3. java.lang是核心包,下面的直接类型是自动导入的;

例如:String、System类

lang包的子包中的类型不会自动导入,需要手动导入

  1. 在一个类中会用到同名不同包的时候必须使用全限定路径

例如:同时使用java.util.Date和java.sql.Date

二、封装

2.1什么是封装

封装是面向对象三大特征之一,其含义有两个:

  1. 把对象的字段和方法存放在一个独立的模块中(类).

  2. 信息隐藏,尽可能隐藏对象的数据和功能的实现细节封装的好处︰

2.2封装的作用

        1.提高组件的重用性,把公用功能放入类中,谁需要就直接调用这个类就好了

        2.保护内部数据的安全

1)不希望在外部类中随意访问类中的成员变量

2)达到权限要求的才能访问。

3)只是获取数据的时候,例如 单例模式

2.3怎么封装

1,私有化成员变量(用privtate)

2,在定义一个public的方法来获取这个值

setXxx()对这个值进行设置

getXxx()获取设置的成员变量,要有返回值

例如

年龄都是女生比较敏感的,所以我们将年龄封装起来,如果年龄大于25岁就输出25岁,如果小于25岁就输出本来的年龄

public class Girl {
    private int age;
    private String name;

    void play(){
        System.out.println("会化妆");
    }
    public void setAge(){

    }
    public void setAge(int age){
        this.age = age;
    }
    public int getAge(){
        if(age>25){
            System.out.println("年龄:"+25);
        }else {
            System.out.println("年龄:"+age);
        }
        return age;
    }


//测试类
public class Text {
    public static void main(String[] args) {
        Girl girl = new Girl();
        girl.setAge(23);
        girl.getAge();
    }

}

 这样我们就封装好了,然后要用的时候就在main方法里面调用就行了

2.4封装的注意事项

1. 不是只有private才叫封装,private只是最大限度的封装而已。

2. get和set方法都是只能获取或者赋值一个成员变量

不能\set(String n,double m,boolean v)赋值3个成员变量

3.单一职能原则:功能最小化,不要想着一个方法写完所有的功能,因为代码复用率高

三、this引入

如果我们将上面的代码this去掉

public class Girl {
    private int age;
    private String name;

    void play(){
        System.out.println("会化妆");
    }
    public void setAge(){

    }
    public void setAge(int age){
        age = age;
    }
    public int getAge(){
        if(age>25){
            System.out.println("年龄:"+25);
        }else {
            System.out.println("年龄:"+age);
        }
        return age;
    }


//测试类
public class Text {
    public static void main(String[] args) {
        Girl girl = new Girl();
        girl.setAge(23);
        girl.getAge();//0,发现赋值是失败的
    }

}

这是为什么呢

2.2JAVA语法基础-封装_第1张图片

如果将this加上的堆栈分析图

2.2JAVA语法基础-封装_第2张图片

3.2this的使用 

3.2.1解决局部变量和成员变量的二义性 ---> get set 方法以及有参构造,代码还是上面的我就不重复截取了

3.2.2 本类中构造方法之间的相互调用,但是必须是\构造方法内的第一句\

2.2JAVA语法基础-封装_第3张图片

3.3this的注意和小结

3.3.1用途

解决局部变量和成员变量的二义性 ---> get set 方法以及有参构造

在本类之间 ,构造方法之间的相互调用 this()调用无参数的构造方法,this(...)可以添加参数,表示调用有参数的构造方法

3.3.2this注意事项:

  1. this不能在静态的方法中使用 : 无法从静态上下文中引用非静态成员this

  2. static类级别,this对象级别

static修饰的是属于类,被共享 。而this是某一个具体的对象地址

注意:你用static 修饰这个成员变量/方法的时候,这个成员变量/方法会在这个类加载的时候就被加载到静态区

你可能感兴趣的:(java,开发语言)