Java 封装

来源:互联网 发布:碧欧泉面霜 知乎 编辑:程序博客网 时间:2024/05/21 10:05

封装

1、封装就是(Encapsulation)就是把不想或者不该告诉别人的东西隐藏起来,把可以告诉别人的公开(隐藏对象的的属性和方法实现的细节,只公开对外接口)

2,具体做法就是把属性私有化,提供公有的方法访问这些属性,在这写公有方法中实现对属性的控制。

示例: public class Student2 {    private String name; // 姓名    private int rp;      // 人品(取值在1-10之间,越高越好)    public int getRp() {        return rp;    }    public void setRp(int rp) {        if (rp < 1 || rp > 10) {            System.out.println("错误!人品值应该在1-10之间!");            this.rp = 1;//人品不符合要求,赋予默认值1        } else {    this.rp = rp;    }    …………    }

通过公有的getter(取值)、setter(赋值)方法访问这两个属性.

3、封装提供了4种访问控制级别
访问修饰符有以下4个:
Public 公共的,最高的访问级别,类的public成员所有类的成员都能访问。

    protected 受保护的,类的protected成员只能被该类的成员及其子类成员访问。还可以被同一个包中其他类的成员访问。    private 私有的,不对外公开,类的private成员只能被该类的成员访问,访问级别最低。    默认 类的成员什么修饰符都没有,又叫包修饰符,只有类本身成员和当前包下的成员可以访问

4、封装的具体实现步骤

1、修改属性的可见性来限制对属性的访问。2、为每个属性创建一对赋值方法和取值方法,用于对这些属性的访问。3、在赋值和取值方法中,加入对属性的存取限制。//访问器有标准写法//标准的设置访问器,set + 要访问的私有属性,将首字母大写拼起来的方法。//然后只能有一个参数,一般这个参数的类型要和要访问的属性类型相同,不能有返回值。//标准的获取访问器,get+要访问的私有属性的名字,首字母大写。//返回值类型需要和访问的属性类型一致,但是不能有参数。//this    //1、 this 关键字是类内部当中对自己的一个引用,可以方便类中方法访问自己的属性;    //2、可以解决局部变量好属性同名的冲突;    //3、this调用本类中的其他方法,static修饰的方法内不能使用this关键字。

方法的的重载

1、方法重载的特点
(1)在同一个类中发生
(2)方法名相同
(3)参数列表不同(参数列表不同可以是:个数不同,顺序不同,类型不同。)
(4)重载:再同一个类下,方法名相同但是签名不同的称为重载,和返回值类型无关。
示例:
public int substract(int a,int b){
System.out.println(“———-int———–”);
return a-b;
}

        public double substract(double a,double b){            System.out.println("----------double--------");            return a-b;        }

构造方法

1、
/*
* 默认的构造方法,咱们也可以去写
* 一般情况下构造方法都是public形式的
* 一旦被写,那么JDK就不再 提供
*/

2、
//构造方法(constructor),构造方法默认就有,就有的那个方法叫默认的构造方法。
//默认构造方法的特点:

/** 1、构造方法的名称跟类名完全相同,大小写一致* 2、没有参数,没有返回值。* 3、如果一个类没有写构造方法,那么默认的构造方法会被JDK所提供*///构造方法的使用原则//1、默认构造方法一般不自己写,除非想要在默认构造方法中进行一些自己需要的操作//2、一旦写了构造方法,不管是默认的或者非默认的,JDK均不再提供默认方法构造方法可以重载。    public Student(String name,int age){    System.out.println("student constructor111111");    this.name = name;    this.age = age;    }    public Student(String name,int age,String address){    /*this.name = name;    this.age = age;*/    this(name,age);//this() 代表调用其他构造方法    System.out.println("student constructor222222");    this.address = address;    }构造方法只能由new关键字和this()调用,this()只能在构造方法中使用,用来调用其它构造方法,且只能作为构造方法代码体的第一条语句。    public Student(String name,int age,String address){    /*this.name = name;    this.age = age;*/    this(name,age);//this() 代表调用其他构造方法    System.out.println("student constructor222222");    this.address = address;    }
原创粉丝点击