zoukankan      html  css  js  c++  java
  • 封装

    1、封装的概念

    方法就是一个最基本封装体。
    类其实也是一个封装体。

    2、封装的好处
    ①提高了代码的复用性。
    ②隐藏了实现细节,还要对外提供可以访问的 方式。便于调用者的使用。这是核心之一,也可 以理解为就是封装的概念。
    ③提高了安全性。


    3、私有private

    不让外界直接访问,只能在本类中使用
    类中不需要对外提供的内容都私有化,包括属性 和方法。
    以后再描述事物,属性都私有化,并提供setXxx  getXxx方法对其进行访问。
    私有仅仅是封装的体现形式而已。

    4、this关键字

    功能1、解决成员变量和局部变量重名问题,this.代表的是本类对象(成员变量),变量就是局部变量

    例如:

    //定义一个类
    public class Person{
    //成员变量 私有拒绝外界访问
    private String name;
    private int age;
    //可以被外界访问的方法,定义getxxx和setxxx
        //公共的访问方式
        //外界调取方式需要传参也就是setxxx
        public void setName(String name){
            //给n赋值相当于给name赋值
            //本类.成员变量=形参变量
            this.name=name;
        }
        public String getName(){
            //给本类的成员变量name返回值
            
            return this.name;
        }
        public void setAge(int a){
        /*判断是安全考虑
         *     if(a<0||a>200){
                age=0;
            }else{
                //age的数就等于形参int a
                this.age=a;
            }*/
            //age的数就等于形参int a==23
            //司南的年龄就是a==23
            this.age=a;
        }
        public int getAge(){
            //返回到调用的方法名里面
            return age;
        }
    //定义普通方法
    public void speak(){
    system.out.in("我叫"+name+"今年"+age);
    }
    //以此来判断下是否是同龄人,不能穿age作为比较方法,因为那样需要穿两个参数,而两个参数又在person类里面,所以是人类
    //定义方法
    public bolean compare(person p){
      //这里的this.age就是person类中的age也就是成员变量,这里的意思就是this.成员变量==形参age
      return this.age==p.age;
    }
    //判断是否是同龄人,借助的就是this方法,若没有this我们只能不停的调取上级方法,而this就是谁调取就是谁,他就是本类的对象。
    }
    //测试类:
    //测试一:输出age和name
      public static void main(String[] args) {
    //new 一个新对象
    Person p=new Person();
    //对象名.方法名();因为私有化,所以我们需要调用普通方法set来获取,与调取对象名.属性不同在于我们需要在set()里传参
    p.setName(“司南”);
    p.setAge(22);
    System.out.println(p.getName()+p.getAge());//返回姓名和年龄,先通过set通过this本类对象赋值司南然后通过get返回本类对象给调用者p,所以打印出来
    ----------------------------
    //对象名.方法名调取speak
    p.speak();
    ----------------------------
    //判断两人是否同龄,因前面我们已经定义好比较方法,于是这里直接赋值调用
    //new两个新对象
    Person p1=new Person();
    p1.setName(“司南”);
    p1.setAge(22);
    Person p2=new Person();
    p2.setName(“周戎”);
    p2.setAge(23);

    bolean flag=p1.compare(p2)
    {system.out.in(flag);
    }
    //不相等,所以错误
    }

    案例:超市管理系统

    //定义shop类
    package com.oracle.demo03;
    
    public class Shop {
    //封装
    //变量
        private int number;
        private String name;
        private double price;
    //方法
        public int getNumber() {
            return number;
        }
        public void setNumber(int number) {
            this.number = number;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public double getPrice() {
            return price;
        }
        public void setPrice(double price) {
            this.price = price;
        }
        
    }
    //定义测试类
    package com.oracle.demo03;
    
    import java.util.ArrayList;
    import java.util.Scanner;
    
    public class Cs_Shop {
        public static void main(String[] args) {
            //创建新类
        
            Scanner  sc =new Scanner(System.in);
            //创建新集合
            ArrayList<Shop> list=new ArrayList<Shop>();
            
            Shop shop =new Shop();
            shop.setNumber(9001);
            shop.setName("少林寺");
            shop.setPrice(17.0);
            list.add(shop);
            Shop shop1 =new Shop();
            shop1.setNumber(9002);
            shop1.setName("少林寺");
            shop1.setPrice(17.0);
            list.add(shop1);
            Shop shop2 =new Shop();
            shop2.setNumber(9003);
            shop2.setName("少林寺");
            shop2.setPrice(17.0);
            list.add(shop2);
            
            while(true){
                show();
                int choose=sc.nextInt();
                switch(choose){
                case 1:getShop(list);
                    break;
                case 2:addShop(list);
                    break;
                case 3:updateShop(list);
                    break;
                case 4:deleteShop(list);
                    break;
                case 5:
                    return;
                }
            }
        }
        //菜单
        public static void show(){
            
            System.out.println("======================欢迎光临oracle超市====================");
            System.out.println("1.货物清单");
            System.out.println("2.添加货物");
            System.out.println("3.修改货物");
            System.out.println("4.删除货物");
            System.out.println("5.退出");
            System.out.println("请输入您的选择: ");
            
        }
        //添加
        public static void addShop(ArrayList<Shop> list){
        Shop shop1=new Shop();
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入编号");
        int num=sc.nextInt();
        shop1.setNumber(num);
        System.out.println("请输入名称");
        String new_name=sc.next();
        shop1.setName(new_name);
        System.out.println("请输入价格");
        double new_price=sc.nextDouble();
        shop1.setPrice(new_price);
        list.add(shop1);
        System.out.println("添加完成");
        }
        //查看
        public static void getShop(ArrayList<Shop> list){
            //Shop shop=new Shop();
            System.out.println("商品编号		商品名称		商品价格");
            for(int i=0;i<list.size();i++){
                System.out.println(list.get(i).getNumber()+"		"+
            list.get(i).getName()+"		"+list.get(i).getPrice());
            }
        }
        //删除
        public static void deleteShop(ArrayList<Shop> list){
            //调取查看
            getShop(list);
            Scanner sc=new Scanner(System.in);
            System.out.println("请输入编号");
            int delete1=sc.nextInt();
            //遍历数组
            for(int i=0;i<list.size();i++){
                if(list.get(i).getNumber()==delete1){
                    list.remove(i);
                }
            }
            System.out.println("删除完毕");
            
        }
        //修改
        public static void updateShop(ArrayList<Shop> list){
            getShop(list);
            Scanner sc=new Scanner(System.in);
            System.out.println("请输入要修改的编号");
            int update1=sc.nextInt();
            System.out.println("请输入要修改的名称");
            String  update2=sc.next();
            System.out.println("请输入要修改的价格");
            double update3=sc.nextDouble();
            for(int i=0;i<list.size();i++){
                if(list.get(i).getNumber()==update1){
                    list.get(i).setName(update2);
                    list.get(i).setPrice(update3);
                    
                }
            }
        }
    }

  • 相关阅读:
    【objective-c】字典快速转换为Model代码
    【objective-c】类目 延展 协议
    【objective-c】内存管理原则
    UI基础-UI基础控件(一)
    OC面向对象-OC基础早知道
    我对于编程培训班的一些看法
    如何为SQLSERVER查询分析器开启事务
    准备在博客园常驻了
    Spring学习(二)(1.Spring依赖注入的方式 2.依赖注入的类型 3.Bean的作用域 4.自动注入 5在Spring配置文件中引入属性文件6使用注解的方式 )
    Springmvc的常用注解
  • 原文地址:https://www.cnblogs.com/a199706/p/11294300.html
Copyright © 2011-2022 走看看