首页 > 代码库 > java之类的封装

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;    }}

 



java之类的封装