java之类的封装

类和对象
成员变量,成员函数
特殊的成员变量和成员函数
函数重载
构造函数
静态变量
静态函数
面向对象:封装 继承 多态
封装 Encapsulation
为什么需要封装?
外界无法直接操作对象的具体的属性(安全性)
核心思想:将安全性要求较高的成员变量定义为私有的,对他们的操作通过成员函数来进行,对其操作的条件在成员函数中定义

---管理类的方法:包(package)
(1)可以将类放到包里面,
在类的文件头上注明包的路径。
package 包名;
Customer类放到bank包中
可以大包里面含有小包,定义包时用.隔开
ATM类放到bank包中的sys包中
package bank.sys;
编程规范:Java中,包的名字所有字母小写

将类用包进行管理时,类一般有两种访问方式:默认方式,public方式
class Customer{} 默认方式
public class Customer{} public方式

后者叫做public类,public类对包内包外的所有类可见
public类类名必须和文件名相同
默认类,只能对同一个包内的其他类可见

一般使用public类


(2)使用其他包里面的类
导入其他包中的类
import 类的路径;
import bank.Customer; 导入bank包中的Customer类
import bank.*; 导入bank包中的所有类,不包括子包中的类

封装:
类级封装(包)
public类;默认类

成员级封装
成员的访问控制符
private
默认
protected
public
/*成员的访问控制符private,默认,protected,public
*private 成员,仅仅在类内可见
*默认权限,private可见性+对包内其他类可见
*protected成员,默认权限+对包外子类可见
*public成员,对包内包外所有类可见
*注意:真实项目中,成员变量一般私有,成员函数一般
*public,被继承使用的成员一般protected
*一般通过成员函数来访问成员变量

*/

可通过定义setter、getter函数来访问私有的成员变量

class Manager{
    Manager(){ System.out.println("Manager"); }
}
public class ATM{    
    static Manager m;
    ATM(){ 
        m = new Manager();
        System.out.println("ATM");
    }
    public static void main (String[] args) {
        //Customer cus = new Customer();
        new ATM();  new ATM();    new ATM();        
    }
}
package bank;
public class Customer{
    String account;
    private double balance = 0;
    Customer(){}
}
package bank.sys;
import bank.Customer;//导入
public class ATM{
    public static void main (String[] args) {
        Customer cus = new Customer();
    }
}
package bank;
class Customer{
    String account;                        //默认访问权限
    protected String cname;          //protected访问权限
    private double balance;            //private访问权限
    public void quKuan(){}            //public访问权限
    public void cunKuan(){}
}
/*成员的访问控制符private,默认,protected,public
 *private 成员,仅仅在类内可见
 *默认权限,private可见性+对包内其他类可见
 *protected成员,默认权限+对包外子类可见
 *public成员,对包内包外所有类可见
 *注意:真实项目中,成员变量一般私有,成员函数一般
 *public,被继承使用的成员一般protected
 *一般通过成员函数来访问成员变量
 */
package school;
public class Student{
    private String stuId;
    private String sname;
    private int       age;
    //写setter和getter函数?
    public void setSname(String sname){ 
        this.sname=sname;
    }    
    public String getSname(){        return this.sname;    }
    public int getAge()  {  return this.age;    }
    public void setAge(int age){   this.age = age;}    
    public void setStuId(String stuId){ this.stuId=stuid;}
    public String getStuId(){  return this.stuId; }
    
}
class Main{
    public static void main (String[] args) {
        Student s = new Student();
        s.setSname("张三");
        System.out.println(s.getSname());
    }
}
package bank.sys;
import bank.Customer;//导入
public class ATM{
    public static void main (String[] args) {
        Customer cus = new Customer();
    }
}
package bank;
class Customer{
    String account;
    private double balance = 0;
    public void quKuan(double mon){
        if(balance<mon){
            System.out.println("钱不够取");
            return;
        }
        balance -= mon;
        System.out.println("取钱成功");        
    }
}
class Customer{
    String account;
    private double balance = 0;
    public void quKuan(double mon){
        if(balance<mon){
            System.out.println("钱不够取");
            return;
        }
        balance -= mon;
        System.out.println("取钱成功");        
    }
}
class ATM{
    public static void main (String[] args) {
        Customer cus = new Customer();
        cus.quKuan(100);
        cus.balance = -5000;
    }
}



原文地址:https://www.cnblogs.com/chang1203/p/5866988.html