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