• Java:封装


    意义

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

    好处:

    1.能减少耦合

    2.便于对类的设计

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

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

    访问权限的介绍

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

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

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

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

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

    示例

    • 观察private的范围

    private.jpg

    • 观察default的范围

    default.jpg

    default2.jpg

    • 观察protected的范围
    • protected.jpg

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

    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

    快捷键1.jpg

    快捷键2.jpg

  • 相关阅读:
    Web crawler study(1)
    SNMP
    Locked the resolv.conf via command chattr
    HTML 父窗口打开子窗口,并从子窗口返回值
    混合语言学习(一)
    Auto Scale TextView Text to Fit within Bounds
    Android SeekBar size
    Android设置全局字体
    PopupMenu使用,PopupMenu背景的设置
    Android-屏幕适配全攻略
  • 原文地址:https://www.cnblogs.com/whllow/p/12199923.html
Copyright © 2020-2023  润新知