java中的封装

作者: 小漫画ing | 来源:发表于2019-01-21 20:07 被阅读0次

    封装概述:

    是指隐藏对象的属性和实现细节,仅对外提供公共访问方式,这里就会用到一个关键字是private,在后面的使用成员变量时候,不能直接调动,只能通过方法调用;

    好处:

    • 隐藏实现细节,提供公共的访问方式;
    • 提高了代码的复用性;
    • 提高安全性;

    封装原则:

    • 将不需要对外提供的内容都隐藏起来;
    • 把属性隐藏,提供公共方法对其访问;

    private关键字

    • private关键字
      是一个权限修饰符
      可以修饰成员(成员变量和成员方法)
      被private修饰的成员只在本类中才能访问
    • private最常见的应用
      把成员变量用private修饰
      提供对应的getXXX()/setXXX()方法
      一个标准的案例的使用
    package cn.manman.com;
    
    public class fengzhuang {
        private String name;
        private int age;
        private String address;
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
        public String getAddress() {
            return address;
        }
        public void setAddress(String address) {
            this.address = address;
        }
        
    }
    
    

    被private修饰之后的成员变量和成员方法只能在本类中使用,不能在另外一个类直接调用;
    练习:
    将手机类写成一个标准类,然后创建对象测试功能;
    (1)封装类

    package cn.manman.com;
    
    public class phone {
        private String brand;
        public String getBrand() {
            return brand;
        }
        public void setBrand(String brand) {
            this.brand = brand;
        }
        public int getPrice() {
            return price;
        }
        public void setPrice(int price) {
            this.price = price;
        }
        public String getColor() {
            return color;
        }
        public void setColor(String color) {
            this.color = color;
        }
        private int price;
        private String color;
    }
    
    

    (2)测试类

    package cn.manman.com;
    
    public class PhoneDemo {
        public static void main(String[] args) {
            phone p=new phone();
            p.setBrand("华为");
            p.setColor("粉色");
            p.setPrice(10000);
            System.out.println(p.getBrand()+p.getColor()+p.getPrice());
        }
    }
    
    
    结果

    接下来看类中得成员方法以及使用:

    package cn.manman.com;
    /*
     * 类的组成:
     *      成员变量
     *      构造方法
     *      成员方法
     *          根据返回值:
     *              void类型
     *              非void类型
     *          式参数:
     *              空参数方法
     *              非空参方法
     */
    class fang{
        public String getString (){
            return "hello";
        }
        public void show(){
            System.out.println("show");
        }
        public void method(String name){
            System.out.println(name);
        }
        public String funtion(String s1,String s2){
            return s1+s2;
        }
    }
    public class fangfa {
        public static void main(String[] args) {
            fang f=new fang(); 
            //调用无参无返回值
            f.show();
            //调用无参有返回值方法
            String result=f.getString();
            System.out.println(result);
            //调用有参无返回值方法
            f.method("lisi");
            String result1=f.funtion("我是", "李四");
            System.out.println(result1);
            }
    }
    
    
    结果

    练习1:定义一个类Demo,其中定义一个求两个数据和的方法,定义一个测试了Test,进行测试;

    package cn.manman.com;
    /*
     * 定义一个类Demo,其中定义一个求两个数据和的方法,
     * 定义一个测试了Test,进行测试;
     */
    class Demo{
        public int shuju(int a,int b){
            return a+b;
        }
    }
    public class lianxi1 {
        public static void main(String[] args) {
            Demo demo=new Demo();
            int sum=demo.shuju(10, 20);
            System.out.println(sum);
        }
    }
    
    
    结果

    练习2:定义一个长方形类,定义求周长和面积的方法,然后定义一个测试类Test,进行测试

    package cn.manman.com;
    /*
     * 定义一个长方形类,定义求周长和面积的方法,
     * 然后定义一个测试类Test,进行测试
     */
    class Dem{
        public int zhouchang(int a,int b){
            return (a+b)*2;
        }
        public int mianji(int a,int b){
            return a*b;
        }
    }
    public class lianxi2 {
        public static void main(String[] args) {
            Dem dem=new Dem();
            System.out.println(dem.zhouchang(4, 2));
            System.out.println(dem.mianji(4, 2));
        }
    }
    
    
    结果

    练习3:定义一个员工类,自己分析出几个成员,然后给出成员变量,构造方法,getXXX和setXXX方法,以及一个显示所有成员信息的方法。并测试。

    package cn.manman.com;
    /*
     * 定义一个员工类,自己分析出几个成员,然后给出成员变量,
     * 构造方法,getXXX和setXXX方法,
     * 以及一个显示所有成员信息的方法。并测试。
     */
    class Demo11{
        private int ID;
        public int getID() {
            return ID;
        }
        public void setID(int iD) {
            ID = iD;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
        private String name;
        private int age;    
    }
    public class lianxi3 {
        public static void main(String[] args) {
            Demo11 Demo11=new Demo11();
            Demo11.setID(1);
            Demo11.setName("李四");
            Demo11.setAge(12);
            System.out.println(Demo11.getName()+Demo11.getAge()+Demo11.getID());
        }
    }
    
    
    结果

    练习4:定义一个类MyMath,提高基本的加减乘除功能,然后进行测试。

    package cn.manman.com;
    
    import java.util.Scanner;
    
    /*
     * 定义一个类MyMath,提高基本的加减乘除功能,然后进行测试。
     */
    class MyMath{
        public int add(int a,int b){
            return a+b;
        }
        public int jian(int a,int b){
            return a-b;
        }
        public int chengfa(int a,int b){
            return a*b;
        }
        public int chufa(int a ,int b){
            return a/b;
        }
    }
    public class lianxi4 {
        public static void main(String[] args) {
            MyMath math=new MyMath();
            Scanner scanner=new Scanner(System.in) ;
            System.out.println("请输入您的第一个数据:");
            int a=scanner.nextInt();
            System.out.println("请输入您的第二个数据:");
            int b=scanner.nextInt();
            System.out.println("求和:"+math.add(a, b));
            System.out.println("减法:"+math.jian(a, b));
            System.out.println("乘法:"+math.chengfa(a, b));
            System.out.println("除法:"+math.chufa(a, b));
        }
    }
    
    
    结果

    相关文章

      网友评论

        本文标题:java中的封装

        本文链接:https://www.haomeiwen.com/subject/cjpfjqtx.html