Java面向对象入门(2)-访问修饰符
Java访问修饰符–public, protected, private and default
Java提供了四个访问修饰符来设置类,变量,方法和构造函数的访问级别,即public,private,protected和default。这些访问级别修饰符确定其他类是否可以使用特定字段或调用特定方法。
1. Java访问修饰符
让我们快速地比较一下这些访问修饰符。
- public -随处可见
- protected –可在同一包和子类中访问
- default –仅在同一程序包中可访问
- private –仅可在同一类上使用
可以严格按以下顺序对访问说明符进行排序:
公用>受保护>软件包专用(或默认)>专用
1.1. public
公众可以从任何地方访问。可以从任何其他类访问已声明为公共的类,方法,构造函数,接口等。
但是,如果我们尝试访问的公共类位于不同的包中,则仍然需要导入公共类。
public class HelloWorld
{
private String format;
public String getFormat() {
return this.format;
}
public void setFormat(String format) {
this.format = format;
}
}
在上面的示例中,getFormat()和setFormat()方法是公共的,因此可以在任何地方访问它们。
1.2. protected
相同程序包的类和任何程序包中的子类都可以访问Protected。受保护的访问使子类有机会使用helper方法或变量,同时防止无关的类尝试使用它。
public class HelloWorld
{
private String format;
protected String getFormat() {
return this.format;
}
protected void setFormat(String format) {
this.format = format;
}
}
在上面给出的示例中HelloWorld,变量format是声明的protected,因此可以由存在于同一包中的所有类HelloWorld.java以及存在于其他包中的子类访问。
1.3. default (package private)
默认访问修饰符意味着我们不会为类,字段,方法等明确声明访问修饰符。默认可被同一包的类访问。
请注意,public static final默认情况下,接口中的字段是隐式的,接口中的方法是默认的public。
public class HelloWorld
{
String format;
public String getFormat() {
return this.format;
}
public void setFormat(String format) {
this.format = format;
}
}
1.4. private
private访问修饰符是最严格的访问级别。(最高级)类和接口不能是私有的。私人变量只能在同一类内访问。声明为私有的方法,变量和构造函数只能在声明的类本身内访问。
在上面给出的示例中HelloWorld,变量format被声明为私有,因此没有类可以直接访问它。必须通过公共方法getFormat()和进行访问setFormat()。
访问级别以两种方式影响您。首先,当您使用来自另一个来源的类时,访问级别确定您自己的类可以使用那些类的成员。其次,编写类时,需要确定类中每个成员变量和每个方法应具有的访问级别。
局部变量和形式参数不能使用访问说明符。由于根据范围规则,它们本质上是外部无法访问的,因此它们实际上是私有的。
如果其他程序员使用您的类,则要确保不会发生由于滥用而引起的错误。访问级别可以帮助您做到这一点。
2.访问控制级别
访问控制分为两个级别。
- 类级别 -允许的修饰符是public或package-private(默认)。
- 方法级别 -允许的修饰符是public,private,protected或package-private(默认)。
可以使用修饰符声明一个类public,在这种情况下,该类对于所有地方的所有类都是可见的。如果类没有修饰符(default,也称为package-private),则仅在其自己的包中可见。
对于成员,还有两个附加的访问修饰符:private和protected。private修饰符指定只能在其自己的类中访问该成员。
protected修饰符指定成员只能在其自己的程序包中(与package-private一样)访问,并且只能由其在另一个程序包中的类的子类访问
更多精彩请关注
Java面向对象入门(2)-访问修饰符的更多相关文章
- Java面向对象_包装类访问修饰符
在java中有一个设计的原则"一切皆对象",java中的基本数据类型就完全不符合这种设计思想,因为八种基本数据类型并不是引用数据类型,所以java中为了解决这样的问题,jdk1.5 ...
- Java 中的 protected 访问修饰符你真的了解吗?
protected Java 中的 protected 访问修饰符 总结 在同一个包中,类中 protected 或 default 修饰的属性或方法可以在类外被其对象 (实例) 外部访问,也可以被子 ...
- Java学习笔记:04面向对象-内部类_访问修饰符_final
04面向对象-内部类/访问修饰符/final 1.static的介绍 static:关键字,静态的 static的作用是用来修饰类中的成员 2.访问一个类中的某一个成员变量 方法一: _1.创建对象 ...
- Java public 和 private 访问修饰符
何为封装 从事面向对象编程的 Java 程序员,不可能不知道封装,它是面向对象编程的精髓,非常重要. 那什么是封装?字面意思就是把摆在外面的东西包起来. 一句话,封装就是对外隐藏内部细节. 那为何要封 ...
- java中四种访问修饰符
Java中的四种访问修饰符:public.protected.default(无修饰符,默认).private. 四种修饰符可修饰的成分(类.方法.成员变量) public protected d ...
- Java包、权限访问修饰符、封装性
包 概念: 物理上是文件夹:逻辑上是有逻辑关系的类的集合 作用: 避免类重名:控制访问权限 命名规范: 在包名中,可以使用.号来区分包的级别:包名一般情况下是小写 第一级 指该项目的类型,如com,o ...
- JAVA 中的权限访问修饰符(public,protected,default,private )
JAVA中有四个权限访问修饰符:public,protected,default,private 注意:这里讲的是对类中属性和方法的访问权限,并不是类的访问权限 1.default:包访问权限 如果什 ...
- Java—匿名对象/内部类/访问修饰符/代码块
匿名对象 匿名对象是指创建对象时,只有创建对象的语句,却没有把对象地址值赋值给某个变量. //创建一个普通对象 Person p = new Person(); //创建一个匿名对象 new Pers ...
- Java面向对象之 接口: [修饰符] interface 接口名 {...};子接口:[修饰符] interface 接口名 extends 父接口,父接口2...{...}
1.什么是接口? 类比抽象类,把功能或者特性类似的一类 抽象的更彻底,可以提炼出更加特殊的"抽象类"----接口 2.如何定义接口 语法: [修饰符] interface 接口名 ...
随机推荐
- php编译完php.ini加载问题-Loaded Configuration File (none)
编译安装php7时指定了--with-config-file-path=/usr/local/php7/etc,修改了 php.ini 的配置后重启,但就是不生效. 出现Loaded Configur ...
- os模块常用方法笔记
os模块是程序和系统文件之间的交互接口,可以实现对文件的创建.删除等功能,以下对os模块的功能做一个笔记,方便以后学习和查找. import os os.getcwd() #获取当前工作目录,即当前p ...
- JavaWeb高级编程(上)
好久没更新了,发一篇以前记录学习的笔记. 面向读者:已经具有丰富的Java语言和Java SE平台知识的软件开发者和软件工程师. 预掌握知识: Internet.TCP.HTTP协议 HTML(5) ...
- model form
ModelForm 能允许我们通过一个 Model 直接创建一个和该模型的字段一一对应的表单,大大方便了表单操作. 下面来看一个例子. 首先我们有这样的 model: from django.db i ...
- String、StringBuilder、StringBuffer区别
=====================================String=================================★1.它在java.lang包中.String类 ...
- android实例 listview与sqlite数据绑定
ListView与Sqlite数据库绑定步骤: 1.将Sqlite数据库的内容查询出来并放入数组列表中,形成ListView的数据源: 2.适配器绑定数据源,显示在ListView item中. 本文 ...
- C# 多态和接口
1多态可以有属性,接口只有方法 2关键字不同,多态有静态多态(abstract)和动态多态(virtual),静态多态不能new()出自己,动态多态可以;多态中可以有自己的方法可设置不需要子类重写,接 ...
- POJ_1042_贪心
题目描述: 每组数据给你n个胡,h小时时间,每个湖一次可钓鱼数量,每个湖每次钓鱼后下次可钓鱼数量的减少量,从每个湖到下一个湖所需时间.求最大钓鱼量. 要注意的是,刚开始在第一个湖,每次移动只能往下一个 ...
- 利用Kubernetes中的leaderelection实现组件高可用
在Kubernetes中,通常kube-schduler和kube-controller-manager都是多副本进行部署的来保证高可用,而真正在工作的实例其实只有一个.这里就利用到 leaderel ...
- Why all application lack a kind of most really charm ?
Website and APP we used now are mostly web2.0 applications. While people practise in use, they can n ...