Java类和对象:private/public/friendly/封装
封装,就是把数据和对这些数据的操作放在一起,并且用这些操作把数据掩盖起来,是面向对象的基本概念之一,
也是最核心的概念。可以理解为一个鸡蛋,用操作(蛋白)将数据(蛋黄)包围起来,就是封装。
我们有非常直截了当的手段来保证在类的设计的时候做到封装:所有的成员变量必须是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/封装相关推荐
- [Java] 类和对象(简介,封装,内存机制,构造方法)
文章目录 1 面向对象思想 1.1面向对象的思想概述 举例 特点 1.2 类和对象 类 对象 类和对象的关系 1.3 类的定义 1.4 对象的创建以及使用 1.5 对象的内存 1.6 类作为参数 注意 ...
- java写一个外网访问的接口_【JAVA基础】一个案例搞懂类、对象、重载、封装、继承、多态、覆盖、抽象和接口概念及区别(中篇)...
0 前言 初学JAVA时,总会对一些概念一知半解,相互混淆,不明其设计的用意,如类.对象.重载.封装.继承.多态.覆盖.抽象类.接口概念.为便于理解和巩固,本文将基于一个案例及其变形,展现各个概念的定 ...
- 杨校老师课堂之Java类与对象、封装、构造方法
杨校老师课堂之Java类与对象.封装.构造方法 本篇文章内容如下: 面向对象 类与对象 三大特征--封装 构造方法 教学目标 能够理解面向对象的思想 能够明确类与对象关系 能够掌握类的定义格式 能够掌 ...
- java 类与对象、封装、构造方法
java 类与对象.封装.构造方法 面向对象 类与对象 三大特征--封装 构造方法 第1章 面向对象思想 1.1 面向对象思想概述 概述 Java语言是一种面向对象的程序设计语言,而面向对象思想是一种 ...
- java类和对象程序_Java类与对象程序设计基础
Java类与对象程序设计基础 一.实验目的: 通过编制一个独立应用程序,使得学生掌握Java的系统所提供类的引用方法:通过编制一个完整的应用程序,使得学生对Java的应用程序的基本构成和基本算法熟练掌 ...
- JAVA类和对象(1)
JAVA类和对象 1.类和对象的初步认识 2.类的实例化 3.类的成员 3.1 字段/属性/成员变量 3.2 null 3.3 引用的指向 3.3 方法 (method) 3.4 static关键字 ...
- 实验2 Java类和对象的设计
实验题目:Java类和对象的设计 一.上机目的和要求 理解面向对象的编程思想.类与对象的概念: 加深理解封装性.继承性和多态性: 掌握this.super.final.static等关键字的使用: 掌 ...
- java类与对象实验_JAVA类与对象实验报告
<JAVA类与对象实验报告>由会员分享,可在线阅读,更多相关<JAVA类与对象实验报告(6页珍藏版)>请在人人文库网上搜索. 1.面向对象程序设计实验报告实验三.类与对象(1) ...
- 解析 Java 类和对象的初始化过程
跳转到主要内容 中国 [ 选择 ] dW 全部内容-------------- AIX and UNIX Info Mgmt Lotus Rational WebSphere-------- ...
- 【Java】第7章 Java 类和对象 头歌Educoder实训作业(七)
第1关:练习-Java类和对象之类的声明之复数运算 任务描述 本关任务:求两个复数相加后的结果. 两个复数之间相加的运算法则:实部与实部相加,虚部与虚部相加. 关于复数的定义,可以自行查阅,本实训不做 ...
最新文章
- 研究生新生进入实验室后,如何成长?5点建议分享
- SimpleDraw-Windows Phone7上的应用
- 2.羽翼sqlmap学习笔记之MySQL注入
- 【VS Code】关于VS Code 中文显示乱码
- Selenium自动化测试-4.By定位及如何确定元素唯一
- 推荐系统-Task03离线物料系统的构建
- 【优化算法】改进型的LMS算法-SVSLMS算法【含Matlab源码 632期】
- C/C++ 各种进制的表示方法/ 进制前缀
- 鸿蒙系统桌面建文件夹,怎样把桌面上的文件放在一个文件夹里
- dex转为java_android - 将DEX反编译成Java源代码
- vue Root file specified for compilation
- Winedit修改快捷键
- R语言自学-Rstudio使用指南
- 以华为2016年笔试题为例,详解牛客网的在线判题系统(OJ模式)
- 后代选择器和子选择器
- 电机编码器调零步骤_各种编码器调零方法
- GTX1650 搭建TensorFlow-GPU 2.4框架(CUDA11.0 + cudnn 8.04 + anaconda 3.8)
- [Java经典题目] 随机得到一个[ 1-100]之间的年龄
- Python实现三轴加速度计步功能
- 五大电影三部曲的DVD
热门文章
- Stata: 快速呈现常用分布临界值表
- html设置字体透明度,css怎么设置字体不透明度?
- java导出excel锁定状态_Java设置excel单元格锁定状态 | 学步园
- 查理·芒格:投资与人生皆是自我修行-1
- 数学建模入门-python实现单目标模糊综合评价法
- 计算机网络复习整理(二三四章习题)
- PAT甲级 1097
- 微信小程序如何更新云数据库
- nmds与mds的区别_NMDS非度量多维尺度分析—基于微生物群落
- 二阶魔方万能还原公式_2阶魔方教程简单口诀(二阶魔方还原公式口决是什么?)...