Java基础--面向对象编程2(封装)
时间:2019-04-20
本文章向大家介绍Java基础--面向对象编程2(封装),主要包括Java基础--面向对象编程2(封装)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1.封装的定义:
封装:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。
2. 为什么需要封装?封装的作用和含义?
首先思考一个问题:当我们要看电视时,只需要按一下开关和换台就可以了。有必要了解电视机内部的结构吗?有必要碰碰显像管吗?
答案显然是否定的。隐藏对象内部的复杂性,只对外公开简单的接口。便于外界调用,从而提高系统的可扩展性、可维护性。
我们程序设计要追求“高内聚,低耦合”。高内聚是类的内部数据操作细节自己完成,不允许外部干涉;低耦合是仅暴露少量的方法给外部使用。
3.程序封装的步骤
[1]属性私有化
在声明类的属性时在用private进行修饰。
[2]提供公共的设置器和访问器
在类中添加set()方法和get()方法充当公共的设置器和访问器。
[3]在设置器和访问器中添加业务校验逻辑
在set()方法和get()方法中设置判断语句,对对象中输入的属性值进行判断,过滤掉错误的数据。
4.实例
以下程序为创建一个Dog类:
a.在属性声明时,对属性进行private修饰进行私有化。
b.通过添加setName(String name)方法,对当对象的name属性值为空时,进行系统提醒并赋予默认值。同理,setHealth(int health)和setLove(int love)方法对health和love属性值进行数值限制,当这2个对象的属性值超过100和小于0时,系统会进行提醒并默认赋值。
1 public class Dog{ 2 private String name; 3 private String strain; 4 private int health; 5 private int love; 6 public void setName(String name){ 7 if(name.equals("")){ 8 System.out.println("宠物名字不能没有名字,系统默认将宠物取名为天天"); 9 this.name="天天"; 10 }else{ 11 this.name=name; 12 } 13 } 14 public String getName(){ 15 return this.name; 16 } 17 public void setStrain(String strain){ 18 this.strain=strain; 19 } 20 21 public String getStrain(){ 22 return this.strain; 23 } 24 public void setHealth(int health){ 25 if(health>100 || health<0){ 26 System.out.println("宠物健康值输入有误,系统默认将健康值设定为60"); 27 this.health=60; 28 }else{ 29 this.health=health; 30 } 31 } 32 public int getHealth(){ 33 return this.health; 34 } 35 public void setLove(int love){ 36 if(love>100||love<0){ 37 System.out.println("宠物亲密度输入有误,系统默认将亲密度设定为60"); 38 this.love=60; 39 }else{ 40 this.love=love; 41 } 42 } 43 public int getLove(){ 44 return this.love; 45 } 46 public Dog(){ 47 48 } 49 50 public Dog(String strain){ 51 this.strain =strain; 52 } 53 public Dog(String name,String strain,int health,int love){ 54 this(strain); 55 this.setName(name); 56 this.setHealth(health); 57 this.setLove(love); 58 59 } 60 public void showInfo(){ 61 System.out.print("我的名字叫"+this.name); 62 System.out.print(",我的品种是"+this.strain); 63 System.out.print(",健康值:"+this.health); 64 System.out.print(",亲密度:"+this.love); 65 } 66 67 }
1 import java.util.Scanner; 2 public class Test01{ 3 public static void main(String[] args){ 4 Scanner input =new Scanner(System.in); 5 System.out.println("请输入狗狗的名字:"); 6 String name=input.next(); 7 System.out.println("请输入狗狗的品种:"); 8 String strain=input.next(); 9 System.out.println("请输入狗狗的健康值:"); 10 int health=input.nextInt(); 11 System.out.println("请输入狗狗的亲密度:"); 12 int love=input.nextInt(); 13 Dog dog =new Dog(name,strain,health,love); 14 dog.showInfo(); 15 } 16 }
测试结果:
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- PL/SQL 数据库连接工具的下载、安装与使用实例演示
- JavaScript 技术篇-JSON字符串在线快速格式化查看实例演示,json.cn网址格式化json字符串
- Python 技术篇-含中文编码的代码运行方法,(unicode error) ‘utf-8‘ codec can‘t decode问题原因及解决方法
- Spring Boot Actuators
- 用图机器学习探索 A 股个股相关性变化
- Python 技术篇-连接oracle数据库并执行sql语句实例演示,python连接oracle数据库oci详细配置方法
- MySQL 技术篇-mysql数据库的安装、配置与使用实例演示
- JavaScript 技术篇-js代码获取当前操作系统信息、浏览器版本信息实例演示,windows NT版本对照表
- Oracle 数据库impdp导入数据库版本和dmp数据库文件版本不匹配问题解决方法,ORA-39142版本号不兼容、ORA-39000转储文件说明错误解决方法
- 实践总结:基于Kbone使用React同构开发小程序
- BAT 批处理命令 - 实现输出当前文件夹下的所有文件夹名的功能实例演示
- Python+Selenium 自动化-指定chrome驱动运行selenium实例演示,运行指定位置下的浏览器驱动
- Linux 命令查找指定文件夹下符合查询条件的文件和文件夹实例演示
- 用Python实现一个最新QQ办公版(TIM)的登录界面
- Oracle 数据库直接执行本地sql文件、sql脚本实例演示