封装

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("商品编号\t\t商品名称\t\t商品价格");
        for(int i=0;i<list.size();i++){
            System.out.println(list.get(i).getNumber()+"\t\t"+
        list.get(i).getName()+"\t\t"+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);
                
            }
        }
    }
}

 

posted @ 2019-08-03 11:42  lvyimin  阅读(236)  评论(0编辑  收藏  举报