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面向对象的三大特性之封装的更多相关文章

  1. java基础笔记(6)----面向对象的三大特性

    简介:面向对象的三大特性就是封装,继承,多态,是面向对象的核心. 封装 简介:封装是类的边界,可以对数据起到保护作用 特性:属性私有,提供公开的get/set方法 属性私有:private 数据类型 ...

  2. Java学习笔记十五:Java中的成员变量和局部变量

    Java中的成员变量和局部变量 一:成员变量: 成员变量在类中定义,用来描述对象将要有什么 成员变量可以被本类的方法使用,也可以被其他类的方法使用,成员变量的作用域在整个类内部都是可见的 二:局部变量 ...

  3. Java学习笔记十九:Java中的访问控制修饰符

    Java中的访问控制修饰符 一:Java修饰符的种类: 访问修饰符 非访问修饰符 修饰符用来定义类.方法或者变量,通常放在语句的最前端.我们通过下面的例子来说明: public class Hello ...

  4. Java学习笔记十六:Java中的构造方法

    Java中的构造方法 1.使用new+构造方法 创建一个新的对象: 2.构造方法是定义在Java类中的一个用来初始化对象的方法: 3.构造方法与类同名且没有返回值: 4.语法格式: public 构造 ...

  5. Java学习笔记十二:Java中方法的重载

    Java中方法的重载 什么是方法的重载呢? 如果同一个类中包含了两个或两个以上方法名相同.方法参数的个数.顺序或类型不同的方法,则称为方法的重载,也可称该方法被重载了.如下所示 4 个方法名称都为 s ...

  6. python3.4学习笔记(十八) pycharm 安装使用、注册码、显示行号和字体大小等常用设置

    python3.4学习笔记(十八) pycharm 安装使用.注册码.显示行号和字体大小等常用设置Download JetBrains Python IDE :: PyCharmhttp://www. ...

  7. Python 面向对象的三大特性:封装,继承,多态

    # 面向对象的三大特性:封装,继承,多态 # 继承的影响:资源的继承,资源的使用,资源的覆盖,资源的累加 # 资源的继承,在Python中的继承是指能使用父类的资源,而不是说在子类也复制一份父类代码到 ...

  8. Python 入门 之 面向对象的三大特性(封装 / 继承 / 多态)

    Python 入门 之 面向对象的三大特性(封装 / 继承 / 多态) 1.面向对象的三大特性: (1)继承 ​ 继承是一种创建新类的方式,在Python中,新建的类可以继承一个或多个父类,父类又可以 ...

  9. Java学习笔记二十一:Java面向对象的三大特性之继承

    Java面向对象的三大特性之继承 一:继承的概念: 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类. 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方 ...

随机推荐

  1. 爬虫入门之Scrapy框架实战(新浪百科豆瓣)(十二)

    一 新浪新闻爬取 1 爬取新浪新闻(全站爬取) 项目搭建与开启 scrapy startproject sina cd sina scrapy genspider mysina http://roll ...

  2. Python学习---重点模块之subprocess

    subprocess是用来执行系统程序,查看系统的模块, 查看当前目录 第一种方法: import subprocess # subprocess会单独自己开辟一个线程,内部是多线程 # stdout ...

  3. selenium+python 数据驱动-csv篇,可封装

    #循环读取csv文件中的数据,可以作为用户名,密码等使用from selenium import webdriverimport csv#获取csv文件中password列with open(r'C: ...

  4. 如何跟踪比特币SV(BSV)地址余额?

    Coin Balance Tracker 能够查看任何BSV/BCH/BTC地址的当前余额.您只需要确保你的电脑能连接Internet以及地址正确.此程序非常安全,因为它只使用公共数据,不需要登录和密 ...

  5. Linux下XAMPP的部署实战

    上传源码文件 rz -be 下载xampp安装包wget http://sourceforge.net/projects/xampp/files/XAMPP%20Linux/5.5.28/xampp- ...

  6. Microsoft Visual C++ 2005 Redistributable 无法卸载问题解决办法

    今日遇到一个问题,Microsoft Visual C++ 2005 Redistributable 无法卸载,弹出的对话框如下所示: 试了一些网上的方法,比如下载vcredist_x86.exe,解 ...

  7. 全屏轮播插件 fullPage.js应用(基础版兼容IE7, 背景图版兼容IE8)

    /** * fullPage 1.4.5 * https://github.com/alvarotrigo/fullPage.js * MIT licensed * * Copyright (C) 2 ...

  8. PHP 获取数组随意下标key的上一个prev和下一个next下标值

    PHP 获取数组随意下标key的上一个prev和下一个next下标值 <? php $xoops[1] = '小'; $xoops[2] = '孩'; $xoops[3] = '子'; $xoo ...

  9. thinkPHP输出sql语句(3.2和5.0通用)

    //5.0$qwe = db::table('think_user')->where('id',1)->fetchsql()->column('name'); dump($qwe); ...

  10. MyBatis(9)整合spring

    具体的感兴趣可以参考:MyBatis 此时此刻,没用的话不再多说了,直接开始代码工程吧! 整体的代码实现: 具体使用到的我们在进行细说 基本上理解一边就能会使用整合  准备工作:  db.proper ...