封装,就是把数据和对这些数据的操作放在一起,并且用这些操作把数据掩盖起来,是面向对象的基本概念之一,
也是最核心的概念。可以理解为一个鸡蛋,用操作(蛋白)将数据(蛋黄)包围起来,就是封装。

我们有非常直截了当的手段来保证在类的设计的时候做到封装:所有的成员变量必须是private的,这样就避免别人任意使用你的内部数据;所有public的函数,只是用来实现这个类的对象或类自己要提供的服务的,而不是用来直接访问数据的。除非对数据的访问就是这个类及对象的服务。简单说,给每个成员变量提供一对用于读写的get/set函数也是不合适的设计。

private(私有)关键字只能用于成员变量和成员函数。意思是这个成员对这个类是私有的,
只可以让其它成员或对象(main中的对象)在类中访问。出了这个类就禁止访问,对象也无法访问私有成员。
私有(private)是针对类而不是针对对象的,对象之间的私有变量可以互相访问(只要在类的内部)。

public(公开):在成员函数名前面,在本类中还是其它类中都可以访问。
一个.java文件只有一个类的前缀可以是public且这个类的名字要和文件名相同
public的类代表的是这个类是公开的,其它.java文件可以通过import的方式引用。

如果类的成员函数没有前缀(public|private),那么这个成员函数是"friendly"的。
意思是说和这个.java文件位于同一个包的其它类可以访问(包括自己)

//分数的运算
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);Fraction a = new Fraction(in.nextInt(), in.nextInt());Fraction b = new Fraction(in.nextInt(),in.nextInt());a.plus(b).print();a.multiply(b).plus(new Fraction(5,6)).print();a.print();b.print();in.close();}}
class Fraction{private int fenzi;private int fenmu;public Fraction(int a, int b){this.fenzi = a;this.fenmu = b;}double toDouble(){double c=fenzi/fenmu;return c;}Fraction plus(Fraction r){int fenzi_new = fenzi*r.fenmu + fenmu*r.fenzi;  //在类中,对象可以相互访问其它对象的私有变量int fenmu_new = fenmu*r.fenmu;Fraction x = new Fraction(fenzi_new,fenmu_new);return x;}//这两个成员函数就是friendly的Fraction multiply(Fraction r){int fenzi_new = fenzi*r.fenzi;int fenmu_new = fenmu*r.fenmu;Fraction x = new Fraction(fenzi_new,fenmu_new);return x;}void print(){if(fenzi==fenmu){System.out.println(1);}else{boolean can =false;int d = 0;       //最大公约数for(int i = fenzi;i>0;i--){if(fenzi%i==0&&fenmu%i==0){d = i;break;}}if(d==1){System.out.println(fenzi+"/"+fenmu);}else{fenzi/=d;fenmu/=d;System.out.println(fenzi+"/"+fenmu);}}}
}

Java类和对象:private/public/friendly/封装相关推荐

  1. [Java] 类和对象(简介,封装,内存机制,构造方法)

    文章目录 1 面向对象思想 1.1面向对象的思想概述 举例 特点 1.2 类和对象 类 对象 类和对象的关系 1.3 类的定义 1.4 对象的创建以及使用 1.5 对象的内存 1.6 类作为参数 注意 ...

  2. java写一个外网访问的接口_【JAVA基础】一个案例搞懂类、对象、重载、封装、继承、多态、覆盖、抽象和接口概念及区别(中篇)...

    0 前言 初学JAVA时,总会对一些概念一知半解,相互混淆,不明其设计的用意,如类.对象.重载.封装.继承.多态.覆盖.抽象类.接口概念.为便于理解和巩固,本文将基于一个案例及其变形,展现各个概念的定 ...

  3. 杨校老师课堂之Java类与对象、封装、构造方法

    杨校老师课堂之Java类与对象.封装.构造方法 本篇文章内容如下: 面向对象 类与对象 三大特征--封装 构造方法 教学目标 能够理解面向对象的思想 能够明确类与对象关系 能够掌握类的定义格式 能够掌 ...

  4. java 类与对象、封装、构造方法

    java 类与对象.封装.构造方法 面向对象 类与对象 三大特征--封装 构造方法 第1章 面向对象思想 1.1 面向对象思想概述 概述 Java语言是一种面向对象的程序设计语言,而面向对象思想是一种 ...

  5. java类和对象程序_Java类与对象程序设计基础

    Java类与对象程序设计基础 一.实验目的: 通过编制一个独立应用程序,使得学生掌握Java的系统所提供类的引用方法:通过编制一个完整的应用程序,使得学生对Java的应用程序的基本构成和基本算法熟练掌 ...

  6. JAVA类和对象(1)

    JAVA类和对象 1.类和对象的初步认识 2.类的实例化 3.类的成员 3.1 字段/属性/成员变量 3.2 null 3.3 引用的指向 3.3 方法 (method) 3.4 static关键字 ...

  7. 实验2 Java类和对象的设计

    实验题目:Java类和对象的设计 一.上机目的和要求 理解面向对象的编程思想.类与对象的概念: 加深理解封装性.继承性和多态性: 掌握this.super.final.static等关键字的使用: 掌 ...

  8. java类与对象实验_JAVA类与对象实验报告

    <JAVA类与对象实验报告>由会员分享,可在线阅读,更多相关<JAVA类与对象实验报告(6页珍藏版)>请在人人文库网上搜索. 1.面向对象程序设计实验报告实验三.类与对象(1) ...

  9. 解析 Java 类和对象的初始化过程

    跳转到主要内容 中国 [ 选择 ] dW 全部内容--------------  AIX and UNIX  Info Mgmt  Lotus  Rational  WebSphere-------- ...

  10. 【Java】第7章 Java 类和对象 头歌Educoder实训作业(七)

    第1关:练习-Java类和对象之类的声明之复数运算 任务描述 本关任务:求两个复数相加后的结果. 两个复数之间相加的运算法则:实部与实部相加,虚部与虚部相加. 关于复数的定义,可以自行查阅,本实训不做 ...

最新文章

  1. 研究生新生进入实验室后,如何成长?5点建议分享
  2. SimpleDraw-Windows Phone7上的应用
  3. 2.羽翼sqlmap学习笔记之MySQL注入
  4. 【VS Code】关于VS Code 中文显示乱码
  5. Selenium自动化测试-4.By定位及如何确定元素唯一
  6. 推荐系统-Task03离线物料系统的构建
  7. 【优化算法】改进型的LMS算法-SVSLMS算法【含Matlab源码 632期】
  8. C/C++ 各种进制的表示方法/ 进制前缀
  9. 鸿蒙系统桌面建文件夹,怎样把桌面上的文件放在一个文件夹里
  10. dex转为java_android - 将DEX反编译成Java源代码
  11. vue Root file specified for compilation
  12. Winedit修改快捷键
  13. R语言自学-Rstudio使用指南
  14. 以华为2016年笔试题为例,详解牛客网的在线判题系统(OJ模式)
  15. 后代选择器和子选择器
  16. 电机编码器调零步骤_各种编码器调零方法
  17. GTX1650 搭建TensorFlow-GPU 2.4框架(CUDA11.0 + cudnn 8.04 + anaconda 3.8)
  18. [Java经典题目] 随机得到一个[ 1-100]之间的年龄
  19. Python实现三轴加速度计步功能
  20. 五大电影三部曲的DVD

热门文章

  1. Stata: 快速呈现常用分布临界值表
  2. html设置字体透明度,css怎么设置字体不透明度?
  3. java导出excel锁定状态_Java设置excel单元格锁定状态 | 学步园
  4. 查理·芒格:投资与人生皆是自我修行-1
  5. 数学建模入门-python实现单目标模糊综合评价法
  6. 计算机网络复习整理(二三四章习题)
  7. PAT甲级 1097
  8. 微信小程序如何更新云数据库
  9. nmds与mds的区别_NMDS非度量多维尺度分析—基于微生物群落
  10. 二阶魔方万能还原公式_2阶魔方教程简单口诀(二阶魔方还原公式口决是什么?)...