Java的四种访问修饰符

成员变量有四种修饰符

private 私有的

package/friendly/default 不写

protected 受保护的

public 公共的

比如public 表示公共的

public String name;

而maxHP 没有修饰符即代表package/friendly/default

float maxHP

示例 1 : 类之间的关系

类和类之间的关系有如下几种:

以Hero为例

自身:指的是Hero自己

同包子类:ADHero这个类是Hero的子类,并且和Hero处于同一个包下

不同包子类:Support这个类是Hero的子类,但是在另一个包下

同包类: GiantDragon 这个类和Hero是同一个包,但是彼此没有继承关系

其他类:Item这个类,在不同包,也没有继承关系的类



示例 2 : private 私有的

使用private修饰属性

自身:是可以访问的

同包子类:不能继承

不同包子类:不能继承

同包类:不能访问

其他包类:不能访问

注: 红色字体,表示不可行

package charactor;

import property.Weapon;

public class Hero {

    //属性id是private的,只有Hero自己可以访问
//子类不能继承
//其他类也不能访问
private int id; String name; float hp; float armor; int moveSpeed; public void equip(Weapon w) { } }

示例 3 : package/friendly/default 不写

没有修饰符即代表package/friendly/default

float maxHP; 血量上限

package charactor;

import property.Weapon;

public class Hero {
private int id; String name; // 无修饰符的属性 hp
// 自己可以访问 // 同包子类可以继承
// 不同包子类不能继承 // 同包类可以访问
// 不同包类不能访问
float hp; float armor; int moveSpeed; public void equip(Weapon w) { } }

示例 4 : protected 受保护的

受保护的修饰符

protected float hp; 血量

package charactor;

import property.Weapon;

public class Hero {
private int id; String name; // protected饰符的属性 hp
// 自己可以访问 // 同包子类可以继承
// 不同包子类可以继承 // 同包类可以访问
// 不同包类不能访问
protected float hp; float armor; int moveSpeed; public void equip(Weapon w) { } }

示例 5 : public 公共的

公共的修饰符

public String name; 姓名

任何地方,都可以访问

package charactor;

import property.Weapon;

public class Hero {
private int id; // public的属性 name
// 自己可以访问 // 同包子类可以继承
// 不同包子类可以继承 // 同包类可以访问
// 不同包类可以访问
public String name; protected float hp; float armor; int moveSpeed; public void equip(Weapon w) { } }

示例 6 : 总结



示例 7 : 那么什么情况该用什么修饰符呢?

那么什么情况该用什么修饰符呢?

从作用域来看,public能够使用所有的情况。 但是大家在工作的时候,又不会真正全部都使用public,那么到底什么情况该用什么修饰符呢?

  1. 属性通常使用private封装起来
  2. 方法一般使用public用于被调用
  3. 会被子类继承的方法,通常使用protected
  4. package用的不多,一般新手会用package,因为还不知道有修饰符这个东西

再就是作用范围最小原则

简单说,能用private就用private,不行就放大一级,用package,再不行就用protected,最后用public。 这样就能把数据尽量的封装起来,没有必要露出来的,就不用露出来了

Java自学-类和对象 访问修饰符的更多相关文章

  1. Java语言中有4种访问修饰符

    转载:http://wuhaidong.iteye.com/blog/851754 Java语言中有4种访问修饰符 在Java语言中有4中访问修饰符:package(默认).private.publi ...

  2. C#学习笔记06--类/对象/访问修饰符/方法

    编程思想   1.面向过程   面向过程是要把问题解决的过程分成有一定顺序的不同步骤, 然后按照步骤一步步的将问题解决.   2.面向对象   面向对象解决问题的思路是先分析问题中所涉及的对象, 然后 ...

  3. c# 第33节 类的封装--访问修饰符

    本节内容: 1:封装的简介 2:封装怎么实现 3:访问修饰符 1:封装的简介 2:封装怎么实现 3:访问修饰符 4:访问修饰符注意点

  4. java自学-类与对象

    1.面向对象和面向过程 java是一种面向对象的程序设计语言,而面向对象思想是一种程序设计思想. 这里的对象泛指现实中一切事物,每种事物都具备自己的属性和行为.面向对象思想就是在计算机程序设计过程中, ...

  5. Java自学-类和对象 类属性

    Java的类属性和对象属性 当一个属性被static修饰的时候,就叫做类属性,又叫做静态属性 当一个属性被声明成类属性,那么所有的对象,都共享一个值 与对象属性对比: 不同对象的 对象属性 的值都可能 ...

  6. Java自学-类和对象 类方法

    Java的类方法和对象方法 类方法: 又叫做静态方法 对象方法: 又叫实例方法,非静态方法 访问一个对象方法,必须建立在有一个对象的前提的基础上 访问类方法,不需要对象的存在,直接就访问 步骤 1 : ...

  7. Java自学-类和对象 单例模式

    Java的饿汉式与懒汉式单例模式 LOL里有一个怪叫大龙GiantDragon,只有一只,所以该类,只能被实例化一次 步骤 1 : 单例模式 单例模式又叫做 Singleton模式,指的是一个类,在一 ...

  8. Java自学-类和对象 引用

    什么是Java中的引用? 引用的概念,如果一个变量的类型是 类类型,而非基本类型,那么该变量又叫做引用. 步骤 1 : 引用和指向 new Hero(); 代表创建了一个Hero对象 但是也仅仅是创建 ...

  9. Java自学-类和对象 属性初始化

    如何进行Java的属性初始化 步骤 1 : 对象属性初始化 对象属性初始化有3种 声明该属性的时候初始化 构造方法中初始化 初始化块 . public class Hero { public Stri ...

随机推荐

  1. 最新整理的spring面试题从基础到高级,干货满满

    最新整理的spring面试题从基础到高级,干货满满 前言: 收藏了一些关于Spring的面试题,一方面是为了准备找工作的时候看面试题,另一方面,通过面试题的方式加深一些自己的理论知识. spring ...

  2. JMM和Volatile底层原理分析

    JMM和volatile分析 1.JMM:Java Memory Model,java线程内存模型 JMM:它是一个抽象的概念,描述的是线程和内存间的通信,java线程内存模型和CPU缓存模型类似,它 ...

  3. DRF简易了解

    Drf框架 一丶API接口 # 为了在团队内部形成共识.防止个人习惯差异引起的混乱,我们需要找到一种大家都觉得很好的接口实现规范,而且这种规范能够让后端写的接口,用途一目了然,减少双方之间的合作成本. ...

  4. C#关键字 const与readonly

    ====const==== const关键字来声明某个常量字段或常量局部变量.常量字段和常量局部变量不是变量而且不能修改.常量可以为数字.布尔值.字符串或null引用. 常数声明的类型指定声明引入的成 ...

  5. 【PHP】关于系统性能追踪工具molten

    一.简介 关于molten的介绍网上有很多,是一个全链路追踪的工具,Molten可以看做是phptrace的的升级版(流行的php问题定位工具譬如phptrace,xhprof,这些工具可以自行Goo ...

  6. composer install 出现“Please provide a valid cache path”

    本文背景:通过deployer部署PHP项目[deployer部署工具:https://deployer.org/] 问题:Php 的laravel框架中执行 composer install 后, ...

  7. Linux 信号量之Posix有名字的信号量

    信号量(semaphore),也和互斥锁一样提供了线程间或者进程间的同步功能. 信号量有三种: Posix有名字的信号量 Posix基于内存的信号量 System V信号量 信号量比互斥锁高级,互斥锁 ...

  8. 安装教程-VMware 12 安装企业级 CentOS 7.6

    企业级 CentOS 7.6 系统的安装 1.实验描述 在虚拟机中,手动安装 CentOS 7.6 操作系统,为学习 Linux 提供平台,因此,有的参数有些差异,请勿较真. 2.实验环境 物理机系统 ...

  9. bert剪枝系列——Are Sixteen Heads Really Better than One?

    1,概述 剪枝可以分为两种:一种是无序的剪枝,比如将权重中一些值置为0,这种也称为稀疏化,在实际的应用上这种剪枝基本没有意义,因为它只能压缩模型的大小,但很多时候做不到模型推断加速,而在当今的移动设备 ...

  10. java中判断两个对象是否相等

    package ceshi.com.job; import java.util.ArrayList; import java.util.Arrays; import java.util.List; p ...