zoukankan      html  css  js  c++  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;
        }
    }



  • 相关阅读:
    requestAnimationFrame
    react 面试题
    useState使用和原理
    常用网址记录
    .net 学习官网
    centos nginx 设置开启启动
    Asp.Net Core 发布和部署 Linux + Nginx
    SQL Server 执行计划缓存
    SQL Server之索引解析(二)
    SQL Server之索引解析(一)
  • 原文地址:https://www.cnblogs.com/chang1203/p/5866988.html
Copyright © 2011-2022 走看看