• Java基础封装性


    封装的好处:

    1.封装之后,对于那个事物来说,看不到这个事物比较复杂的那一面,只能看到该事物简单的那一面。复杂性封装,对外提供简单的操作入口。照相机就是一个很好的封装的实例,照相机的实现原理非常复杂,但是对于使用照相机的人来说,操作起来是非常方便的是非常便捷的。还有像电视机也是封装的,电视机内存实现非常复杂,但是对使用者来说不需要关心内部的实现原理,只需要会操控遥控器就行。

    2.封装之后才会形成真正的“对象”真正的“独立体”

    3.封装就意味着以后的程序可以重复使用。并且这个事物应该适应性比较强,在任何场合都可以使用

    4.封装之后,对于事物本身,提高了安全性【安全级别高】

    未封装的示例代码01:

    class User {
        
    	int age;
    }
    /**
     * 用户测试类
     * 
     * 对于当前程序来说:
     * User类中的age属性在外部程序中可以随意访问,导致age属性的不安全。
     * 一个User对象表示一个用户,用户的年龄不可能为负数,以下程序当中年龄值
     * 为负数,程序运行的时候并没有报错,这是当前程序存在的缺陷。
     * */
    public class UserTest{
        
    	public static void main(String[] args){
    	  //创建User对象 
    	  User user = new User();
    	  
    	  //访问age
    	  //读取年龄值【get】
    	  System.out.println("该用户的年龄为: " + user.age);
    	  
    	  //修改年龄值【set】
    	  user.age = 20;
    	  //读取年龄值【get】
    	  System.out.println("该用户的年龄为: " + user.age);
    	  
    	  //这里的age属性显然是完全暴露给外部程序的,对于程序员来说可以操作User对象当中的所有的
    	  //细节,导致User中部分数据不安全。
    	  //不建议这样,建议User类型进行封装,建议在外部程序中不能随意访问User对象当中的属性。这样
    	  //可以保证属性的安全
    	  user.age = -100;
    	  System.out.println("该用户的年龄为: " + user.age);
    	  
    	  
    }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37

    封装的步骤:

    1.所有的属性私有化,使用private关键字进行修饰,private表示私有的,修饰的所有数据只能在本类中访问。

    2.对外提供简单的操作入口,也就是说以后外部程序要想访问set属性,必须通过这些简单的入口进行访问:

    对外提供两种公开的方法,分别是setget方法

    • 想修改age的属性,调用set方法

    • 想读取age的属性,调用get方法

    • setter and getter方法没有static关键字

    3.set方法的命名规范:

    public void setAge(int n){
    
    age = a
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    4.get方法的命名规范:

    public int getAge(){
    
    return;
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    一个属性通常访问的时候包括几种访问形式?

    -第一种方式:想读取这个属性的值,读取get

    -第二种方式:想修改这个属性的值,修改set

    setter and getter方法没有static关键字

    有static关键字修饰事物方法怎么调用:类名.方法名(实参);

    没有static关键字修饰的方法怎么调用:引用.方法名(实参);

    封装的示例代码02:

    class User {
        
    	//属性私有化
    	private int age;
    	
    	//set方法没有返回值,因为set方法只负责修改数据
    	/*
    	  public void setAge(int n){
    	   age = age;//java有就近原则,这里其实并没有给age属性赋值,这里的age都是局部变量
    	  }
    	 */
    	
    	//setter
    	public void setAge(int a){
    		//编写业务逻辑代码进行安全控制
    		if(a < 0 || a > 150){
    			System.out.println("对不起你提供的年龄不合法!");
    			return;
    		}
    		age = a;
    	}
    	
    	//getter
    	public int getAge(){
    		return age;
    	}
    }
    public class UserTest {
    
    	public static void main(String[] args) {
    		
    		//创建User对象
    		User user = new User();
    		
    		//编译报错,age属性私有化,在外部程序中不能直接访问
    		//从此之后age的属性非常的安全,但是有点太安全了
    		//对于目前的程序来说,age属性彻底在外部访问不到
    		//修改
    		user.setAge(-100);
            		
            //读取
    		System.out.println(user.getAge());
    	}
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
  • 相关阅读:
    rhcsa安装及配置
    《Java 核心技术卷1 基础知识》第二章 Java 程序设计环境 笔记
    互联网金融P2P主业务场景自动化测试
    第8章 MySQL的数据目录
    动态规划篇——线性DP
    贪心算法-
    限速器算法
    Redis-使用jedis连接linux中redis服务器失败的解决方案
    Elasticsearch--Python使用、Django/Flask集成
    Kamailio不被重视的模块:nat_traversal
  • 原文地址:https://blog.csdn.net/qq_46096136/article/details/126093778