深度理解Java访问修饰符
作者:dz小伟 发布时间:2021-10-26 17:16:08
标签:Java,访问修饰符
一、作用及种类
UML类图
建模语言或标准建模语言
类的属性、操作中的可见性使用+、#、-分别表示public、protected、private
作用:信息隐藏
防止用户意外修改数据,使模块易于维护和使用有哪些修饰符呢?
private:只有该类可以访问
protected:该类及其子类的成员可以访问,同一个包中的类也可以访问
public:该类或非该类可以访问
默认:同一个包中的类可以访问
可以作用于类,成员,方法
二、深度理解
同一个类
就是同一个类里面的,类相当于结构体
同一个包
圈中的就是包
三、代码理解
属性封装
class Student{//class 相当于c语言的struct
int age;
String name;
double score;
private int sex;//不同类,无法访问这个成员
public void cs(int a){
sex = a;
}
void introduce(){
System.out.println("sex="+sex+",age="+ age +",name=" + name + ",score=" + score);
}
void testFunc(){
System.out.println("testFunc");
}
}
public class Test {
public static void main(String[] args) {
Student stu1 = new Student();
//stu1.sex = 1; 因为类里面使用了private,不同类就无法访问
stu1.cs(0);//可以使用方法,间接修改成员
stu1.age = 22;
stu1.name = "xiaowei";
stu1.score = 100;
stu1.introduce();
stu1.testFunc();
}
}
/*
sex=0,age=22,name=xiaowei,score=100.0
testFunc
*/
方法封装
class Student{//class 相当于c语言的struct
private int age;
String name;
double score;
private int sex;
private void myage(int myage){//不可见的方法,可以在别的方法中使用达到更改属性的目的
age = myage;
}
public void setage(int realage){//更改age
age = realage;
}
public int getage(){//输出age,方法里偷偷使用myage,输出永远是18
myage(18);
return age;
}
void cs(int a){
sex = a;
}
void introduce(){
System.out.println("sex="+sex+",age="+ age +",name=" + name + ",score=" + score);
}
void testFunc(){
System.out.println("testFunc");
}
}
public class Test {
public static void main(String[] args) {
Student stu1 = new Student();
//stu1.sex = 1;
stu1.cs(0);
//stu1.age = 22;
stu1.setage(36);//更改年龄36
stu1.name = "xiaowei";
stu1.score = 100;
stu1.introduce();
stu1.testFunc();
System.out.println("age="+stu1.getage());//输出年龄是18,方法中偷偷调用了不可见的方法myage
}
}
/*
sex=0,age=36,name=xiaowei,score=100.0
testFunc
age=18
*/
来源:https://blog.csdn.net/m0_51247005/article/details/117674783
0
投稿
猜你喜欢
- 本文实例讲述了Java数据结构之链表、栈、队列、树的实现方法。分享给大家供大家参考,具体如下:最近无意中翻到一本书,闲来无事写几行代码,实现
- 今天做项目的时候,遇到一个问题,如果我调用某个服务的接口,但是这个服务挂了,同时业务要求这个接口的结果是必须的,那我该怎么办呢,答案是通过h
- 这篇文章主要介绍了Spring @Conditional注解原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习
- 1.引入AOP依赖<dependency>
- 前言说到对集合去重处理,第一时间想到的肯定是Linq的Distinct扩展方式,对于一般的值类型集合去重,很好处理,直接list.Disti
- 本文实例讲述了C#显示文件夹下所有图片文件的方法。分享给大家供大家参考。具体实现方法如下:<%@ Page Language=&quo
- 如何将Object类型转换为int类型Object object = null;try{ Integer.pars
- java解析json数组最简单的json数组[ { &quo
- 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式。数组虽然也可以存
- 核心配置文件mybatis-config.xml 系统核心配置文件MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置和属
- mybatis in foreach 双层嵌套需求:根据角色id,返回角色名称,入参是List<List> 类型的二维数组,需要
- 使用RateLimiter通过AOP方式进行限流1、引入依赖<!-- guava 限流 --><dependency>
- 实例如下:package com.bwsk.modules.weixin.util;import java.util.Random;/**
- 一、稀疏数组1、什么是稀疏数组当一个数组中大部分元素为0,或者为同一个值的数组时,可以用稀疏数组来保存该数组。稀疏数组,记录一共有几行几列,
- 摘要 &n
- 一、Future 接口当 call()方法完成时,结果必须存储在主线程已知的对象中,以便主线程可以知道该线程返回的结果。为此,可以使用 Fu
- 问题:在web里面用iframe连接一个html文件 - html文件里面是超链接 -&nb
- 一、查询中排除标识字段1.1 测试查询@Testpublic void findAllTest() { List&
- 最近在研究dubbo时,发现了JAVA的SPI特性。SPI的全名为Service Provider Interface,是JDK内置的一种服
- Java实现PC微信扫码支付做一个电商网站支付功能必不可少,那我们今天就来盘一盘微信支付。微信支付官方网站业务流程:开发指引文档支付服务开发