zoukankan      html  css  js  c++  java
  • JAVA-封装

    1、什么是封装?

    顾名思义,封装就是装起来,圈起来的意思,用于类与对象中来讲,就是在一个类中把对象拥有的属性和隐藏信息(条件)进行封装,不允许外部程序直接访问,而必须要通过该类提供的方法来实现对隐藏信息的操作和访问

    2、为什么要用封装?

    封装后,类就是独立的,有效避免了外部错误对此对像的影响,并且能对于对象使用者由于大意产生的错误操作起到预防作用

    封装的好处,就是隐藏类的实现细节,让使用者只能通过程序员规定的方法来访问数据,可以方便加入存取控制语句,限制不合理操作

    减少对象之间的关联性,以降低它们之间的复杂度和依赖性


    3、如何使用封装

    把类的成员变量权限改为private,进行私有化控制,别的类,不能访问

    默认不写的话,就是public 公共的。将public 改为private的话,别的类就不能访问该类的成员变量了

    public class FengZhuang {
        //将成员变量私有化,封装
        private String name;
        private int age;
        private String sex;
    }

    实例代码如下:

    package com.liu.u6.copy1;
    /*
     * 封装的使用
     */
    public class FengZhuang {
        //将成员变量私有化,封装
        private String name;
        private int age;
        private String sex;
        //创建带返回值类型为String的方法
        public String getName(){
            return name;//get到的是set的那个name
        }
        //不带返回值的 但带参的构造方法
        public void setName(String name){
             this.name=name;
        }
        
        public int getAge(){
            return age;
        }
        /******此时属性仍然没有限制作用,需要进一步利用条件判断语句进行限制*************/
        /*public void setAge(int age){
            this.age=age;
        }*/
        public void setAge(int age){
            if(age>0 && age<150){
                this.age=age;
            }else{
                System.out.println("年龄有误!");
            }
            
        }
        
        public String getSex(){
            return sex;
        }
        
        /******此时属性仍然没有限制作用,需要进一步利用条件判断语句进行限制*************/
        /*
         * 
         public void setSex(String sex){
            this.sex=sex;    
        }
         */
        public void setSex(String sex){
            if(sex.equals("男")|| sex.equals("女")){
                this.sex=sex;
            }else{
                System.out.println("性别不合法!");
            }
            
            
        }
        //构造方法 无参
        public  FengZhuang(){
            this.name="无名氏";
            this.age=20;
            this.sex="男";
        }
        
        //构造方法 有参
        public FengZhuang(String name,int age,String sex){
            this.name=name;
            this.age=age;
            this.sex=sex;
        }
        
        //方法 :自我介绍
        public void say(){
            System.out.println("自我介绍一下
    姓名:"+this.name+"
    性别:"+this.age+"
    年龄:"+this.age+"岁");
        }
        
    }

    调用类:

    只能通过方法来赋值,所以你可以看得出来,上面的类中get方法,是用不着的。可以省略不写,需要用时候再写

    package com.liu.u6.copy1;
    
    public class TestFengZhuang {
        public static void main(String[] args) {
            FengZhuang f=new FengZhuang();
            
            //调FengZhuang类中的set方法,,这set方法中都定义了参数,而且把参数值赋给了成员变量
            f.setName("韩国");
            f.setAge(20);
            f.setSex("中性");
            
            f.say();
        }
    }

    结果输出:

  • 相关阅读:
    RTP 控制协议
    非关系型数据库
    关系型数据库
    处理海量数据
    处理大并发
    C++ 模板偏特化-来自STL的思考
    C++详解new/delete
    二分算法来相会
    计算机网络知识点总结
    C++字符串类型转换
  • 原文地址:https://www.cnblogs.com/sincoolvip/p/5492282.html
Copyright © 2011-2022 走看看