Java学习笔记十八:Java面向对象的三大特性之封装
Java面向对象的三大特性之封装
一:面向对象的三大特性;
- 封装
- 继承
- 多态
二:封装的概念;
将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问;
封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。
要访问该类的代码和数据,必须通过严格的接口控制。
封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。
三:封装的好处;
1.只能通过规定的方法访问数据
2.隐藏类的实例细节,方便修改和实现
3.类内部的结构可以自由修改
四:实现Java封装的步骤;
1.修改属性的可见性;
如:
2.创建getter/setter方法;
如:
3.在getter/setter方法中加入属性控制语句;
对属性值的合法性进行判断
4.举个例子:
部分讲解在注释,请留意。
我们应该用封装的方式将我们的属性信息隐藏起来,给用户一个特定的方式访问数据
所以我们在源代码的变量加private修饰符
代码如下:
public class Telphone {
private float screen;
private float cpu;
private float mem;
//自己创建的构造方法
public Telphone(){
System.out.println("无参的构造方法执行了");
}
public Telphone(float newScreen,float newCpu,float newMem){
screen = newScreen;
cpu = newCpu;
mem =newMem;
System.out.print("有参的构造方法执行了");
}
}
于是现在不允许用户随便访问默认的值了
如何访问呢,我们使用set/get方法访问
代码如下:
Telphone类:
package com.test; //1.定义一个类
public class Telphone {
private float screen;
private float cpu;
private float mem;
//自己创建的构造方法 //创建一个get方法获得属性Screen的值
public float getScreen(){
return screen;
}
//创建一个set方法传入参数
public void setScreen(float newScreen){
screen =newScreen;
}
public Telphone(){
System.out.println("无参的构造方法执行了");
}
public Telphone(float newScreen,float newCpu,float newMem){
screen = newScreen;
cpu = newCpu;
mem =newMem;
System.out.print("有参的构造方法执行了");
}
}
InitailTelphone类:
package com.test; public class InitailTelphone { public static void main(String[] args) { Telphone phone2 = new Telphone(5.0f,1.4f,2.0f);
//phone2.cpu = 5.2f;//在这个例子中,用户可以通过phone2这个对象直接修改我们的原始数据,
//这样是不安全的
//通过封装方法set方法得到属性Screen的值
phone2.setScreen(6.0f);
System.out.println();
System.out.println("screen:"+phone2.getScreen());
}
}
这里我们使用了set方法传入参数并通过get方法获取了Screen值的属性
运行结果为:
所以封装就是隐藏属性,通过方法来得到属性
其中set方法用来传入参数,get方法用来获取参数
Java学习笔记十八:Java面向对象的三大特性之封装的更多相关文章
- java基础笔记(6)----面向对象的三大特性
简介:面向对象的三大特性就是封装,继承,多态,是面向对象的核心. 封装 简介:封装是类的边界,可以对数据起到保护作用 特性:属性私有,提供公开的get/set方法 属性私有:private 数据类型 ...
- Java学习笔记十五:Java中的成员变量和局部变量
Java中的成员变量和局部变量 一:成员变量: 成员变量在类中定义,用来描述对象将要有什么 成员变量可以被本类的方法使用,也可以被其他类的方法使用,成员变量的作用域在整个类内部都是可见的 二:局部变量 ...
- Java学习笔记十九:Java中的访问控制修饰符
Java中的访问控制修饰符 一:Java修饰符的种类: 访问修饰符 非访问修饰符 修饰符用来定义类.方法或者变量,通常放在语句的最前端.我们通过下面的例子来说明: public class Hello ...
- Java学习笔记十六:Java中的构造方法
Java中的构造方法 1.使用new+构造方法 创建一个新的对象: 2.构造方法是定义在Java类中的一个用来初始化对象的方法: 3.构造方法与类同名且没有返回值: 4.语法格式: public 构造 ...
- Java学习笔记十二:Java中方法的重载
Java中方法的重载 什么是方法的重载呢? 如果同一个类中包含了两个或两个以上方法名相同.方法参数的个数.顺序或类型不同的方法,则称为方法的重载,也可称该方法被重载了.如下所示 4 个方法名称都为 s ...
- python3.4学习笔记(十八) pycharm 安装使用、注册码、显示行号和字体大小等常用设置
python3.4学习笔记(十八) pycharm 安装使用.注册码.显示行号和字体大小等常用设置Download JetBrains Python IDE :: PyCharmhttp://www. ...
- Python 面向对象的三大特性:封装,继承,多态
# 面向对象的三大特性:封装,继承,多态 # 继承的影响:资源的继承,资源的使用,资源的覆盖,资源的累加 # 资源的继承,在Python中的继承是指能使用父类的资源,而不是说在子类也复制一份父类代码到 ...
- Python 入门 之 面向对象的三大特性(封装 / 继承 / 多态)
Python 入门 之 面向对象的三大特性(封装 / 继承 / 多态) 1.面向对象的三大特性: (1)继承 继承是一种创建新类的方式,在Python中,新建的类可以继承一个或多个父类,父类又可以 ...
- Java学习笔记二十一:Java面向对象的三大特性之继承
Java面向对象的三大特性之继承 一:继承的概念: 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类. 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方 ...
随机推荐
- 爬虫入门之Scrapy框架实战(新浪百科豆瓣)(十二)
一 新浪新闻爬取 1 爬取新浪新闻(全站爬取) 项目搭建与开启 scrapy startproject sina cd sina scrapy genspider mysina http://roll ...
- Python学习---重点模块之subprocess
subprocess是用来执行系统程序,查看系统的模块, 查看当前目录 第一种方法: import subprocess # subprocess会单独自己开辟一个线程,内部是多线程 # stdout ...
- selenium+python 数据驱动-csv篇,可封装
#循环读取csv文件中的数据,可以作为用户名,密码等使用from selenium import webdriverimport csv#获取csv文件中password列with open(r'C: ...
- 如何跟踪比特币SV(BSV)地址余额?
Coin Balance Tracker 能够查看任何BSV/BCH/BTC地址的当前余额.您只需要确保你的电脑能连接Internet以及地址正确.此程序非常安全,因为它只使用公共数据,不需要登录和密 ...
- Linux下XAMPP的部署实战
上传源码文件 rz -be 下载xampp安装包wget http://sourceforge.net/projects/xampp/files/XAMPP%20Linux/5.5.28/xampp- ...
- Microsoft Visual C++ 2005 Redistributable 无法卸载问题解决办法
今日遇到一个问题,Microsoft Visual C++ 2005 Redistributable 无法卸载,弹出的对话框如下所示: 试了一些网上的方法,比如下载vcredist_x86.exe,解 ...
- 全屏轮播插件 fullPage.js应用(基础版兼容IE7, 背景图版兼容IE8)
/** * fullPage 1.4.5 * https://github.com/alvarotrigo/fullPage.js * MIT licensed * * Copyright (C) 2 ...
- PHP 获取数组随意下标key的上一个prev和下一个next下标值
PHP 获取数组随意下标key的上一个prev和下一个next下标值 <? php $xoops[1] = '小'; $xoops[2] = '孩'; $xoops[3] = '子'; $xoo ...
- thinkPHP输出sql语句(3.2和5.0通用)
//5.0$qwe = db::table('think_user')->where('id',1)->fetchsql()->column('name'); dump($qwe); ...
- MyBatis(9)整合spring
具体的感兴趣可以参考:MyBatis 此时此刻,没用的话不再多说了,直接开始代码工程吧! 整体的代码实现: 具体使用到的我们在进行细说 基本上理解一边就能会使用整合 准备工作: db.proper ...