首页 > 编程语言 > 详细

Java:封装

时间:2020-01-16 10:51:31      阅读:67      评论:0      收藏:0      [点我收藏+]

意义

封装是一种设计思想,是一种隐藏复杂过程和内部细节,确保过程能正常运行,留下简单接口提供给用户使用的设计思想。比如说我们所使用的遥控器,一般人都不知道遥控器内部设计和信号传输,但是不妨碍我们使用遥控器,我们正常使用是不能干预遥控器内部的工作原理。

好处:

1.能减少耦合

2.便于对类的设计

3.对内部成员进行精确操作

4.隐藏细节,留下简单操作

访问权限的介绍

修饰符private,default,protect,public从左到右,访问权限递增

private:只能是同一个类下的方法和成员访问

default(默认,即不加修饰符):同一个包下的其他类能访问

protected:不同包的子类和相同包下的其他类能访问

public:所有包下的类都能访问。

示例

  • 观察private的范围

技术分享图片

  • 观察default的范围

技术分享图片

技术分享图片

  • 观察protected的范围
  • 技术分享图片

如果你想调用私有的方法,你可以设计一个公有的方法,来调用这个私有的方法即可。这里会不会觉得这有点多此一举,直接调用就不完了吗,但是直接调用会影响类内部结构,可能导致程序奔溃(大程序),简单程序直接调用会比较方便,直接,影响不大不容易看出来问题。

package whllow;

public class test1 {
    
    private int n;
    
    private void sum() {
        int sum=0;
        for(int i=0;i<=n;i++)//求1+2+...+n的和
            sum+=i;
        System.out.println("sum="+sum); //输出结果  
    }
    
    public void getsum() {
        sum();//调用求和函数
    }
    public void setN(int n) {//设置n的值
        
        this.n = n;
    }
    public static void main(String[] args) {
        
        test1 t =new test1();
        t.setN(10);
        t.getsum();
        
    }
    
    

}

whllow包下的代码

package whllow;

public class person {

    int age;//default int age;
    private int id;
    protected String name;
    public String sex;
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id= id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    
}
class test{

    public static void main(String[] args) {
        
        person tom = new person();
                            int id= tom.id;//private
        int age= tom.age;//default int age;
        String name =tom.name;//protected
        String sex = tom.sex;//public 
        
        
        
    }
    
    
    
}

whllow1包下的代码

package whllow1;

import whllow.person;

public class student extends person{
    
    public static void main(String[] args) {
        student jack = new student();
        int id= jack.id;//private
                        int age= jack.age;//default int age;
        String name =jack.name;//protected
        String sex = jack.sex;//public
        
        person tom = new person();
                        String name1 =tom.name;//protected
        
        
    }
    
    

}

Java类的成员一般是被设置成private,并为其设置setter和getter的方法,并且没有别的复杂的方法称为JavaBean

public class teacher {

    private int id;
    private String name;
    private String sex;
    private int salary;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public int getSalary() {
        return salary;
    }
    public void setSalary(int salary) {
        this.salary = salary;
    }

}

setter和getter可以手写,但是eclipse提供了一些快捷键可以快速写好一个JavaBean

按住shift+alt+s就会弹出下面的界面,选择Generate Getters and Setters

技术分享图片

技术分享图片

Java:封装

原文:https://www.cnblogs.com/whllow/p/12199923.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!