Java 作用域修饰符

Java作用域修饰符

在java语言中,可以使用访问修饰符来规定对类、变量、方法和构造方法的访问。

文章目录

  • 一、访问修饰符
  • 二、非访问修饰符

一、访问修饰符

1.私有的访问修饰符private:

声明为私有访问类型的变量只能通过类中的公共方法被外部类访问。

被声明为private的方法、变量和构造方法,只能被所属类访问,并且类和接口不能被声明为private。

public class PrivateTest{private String name;//私有成员变量public String getName(){return name;}public void setName(String name){this.name = name;}//下面说明了:声明为私有访问类型的变量只能通过类中的公共方法被外部类访问。public static void main(String[] args){PrivateTest p = new PrivateText();//创建类的对象p.setName("private访问修饰符");//调用对象的set方法,为私有成员变量name赋值。System.out.println("name = " + p.getname());}
}

2.无访问修饰符:

不使用访问修饰符声明的变量和方法,可以被这个类本身或者与类在同一个包内的其他类访问。

接口中变量隐式声明为 public stastic final。

接口中的方法默认访问权限为 public。

public class PrivateTest{String name;//默认访问修饰符的成员变量String getName(){return name;}void setName(String name){this.name = name;}public static void main(String[] args){DefaultTest d = new DefaultText();d.setName("default test");System.out.println("name = " + d.getname());}
}

3.受保护的访问修饰符protected

protected修饰符不能修饰类和接口,方法和成员变量能够声明为protected。接口的成员变量和方法不能声明为protected。

可以被这个类本身、与类在同一个包内的其他类、不同包中的子类访问。

package create;
public class Person{				//父类protected String name;			protected void sing(){			System.out.println("父类")}
}package child;						//与父类不在一个包中
import create.Person;				//引入父类
public class Women extends Person{  //继承父类的子类public static void main(string[] args){Women w = new women();w.sing();					//调用子类在父类中继承的方法w.name = "protected";		//可见不同包中的子类可以访问protected修饰的变量。System.out.println(w.name);}
}

4.公有的访问修饰符public

被声明为public的类、方法、构造方法和接口能够被任何其他类访问。

几个相互访问的public类分布在不同的包中,则需要用import导入相应public类所在的包。

类所有的公有方法和变量都能被其子类继承。

package create;
public class Person{public void test(){System.out.println("父类:public test");}
}package child;
import creat.Person;
public class PublicTest{//两个类之间没有继承关系public static void main(String[] args){Person p = new Person();p.test();//调用person类中public方法。}
}

二、非访问修饰符

1.static修饰符

static修饰符用来修饰类的成员变量和成员方法,也可以形成静态代码块。

static修饰的成员变量和成员方法也成为静态变量、静态方法,可以直接通过类名访问他们。

静态变量也称为类变量,局部变量不能被声明成static变量。

无论一个类实例化多少个对象,它的静态变量就只有一份,静态变量独立于该类的任何对象。

JVM加载类时,就会执行静态代码块。

package create;
public class StaticTest{public static final String BANANA = "香蕉";//用static和final修饰的成员变量一旦初始化,其值就不能修改,它的名字建议用大写字母。public static float price = 5.2f;static{//JVM在加载类时会执行这些静态代码块,每个代码块只会被执行一次。System.out.println("static 静态块");}public static void test(){//静态方法只能访问所属类的静态成员变量和静态成员方法。System.out.println(StaticTest.BANANA + "的价格是:" + StaticTest.price);}public static void main(String[] args){StaticTest st = new StaticTest();st.test();System.out.println("main()中," + st.BANANA + "的价格 = " + st.price);//通过对象st调用类的静态成员变量和常量。}
}

2.final修饰符:

final可以修饰类、方法、变量。

final可以修饰类中的变量,分别是静态变量、成员变量、局部变量。

变量初始化可以在定义时初始化,也可以在构造方法中赋初值。final修饰的成员变量表示常量,值一旦给定就无法改变。

一个类不允许其子类覆盖某个方法,可以把这个方法声明为final方法。

final声明的类不能被继承。

/*
如下:编译报错:
错误:无法为最终变量f分配值
错误:Son中的work()无法覆盖Father中的work(),被覆盖的方法为final*/
public class Father{final int f = 9;//值一旦给定就无法改变final void work(){//final定义的成员方法不能被重写System.out.println("上班");}
}
public class Son extends Father{public static void main(String[] args){Son s = new son();s.f = 12;//错误System.out.println(s,f);}    void work(){//错误}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/560477.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python xgboost实战_史上最详细的XGBoost实战

0. 环境介绍Python 版 本: 3.6.2操作系统  : Windows集成开发环境: PyCharm1. 安装Python环境安装Python首先,我们需要安装Python环境。本人选择的是64位版本的Python 3.6.2。去Python官网https://www.python.org/选择相应的版本…

java web导入tomcat_记一次在服务器上导入javaweb 项目的经历---tomcat服务器-Go语言中文社区...

1. 导入数据库远程linux服务器mysql数据库导入和导出.sql文件大部分情况本地开发环境为windows,部署的服务器为Linux,本地数据库导出.sql文件后需要远程导入服务器,具体如下。首先连接服务器,即服务器ip,协议&#xff…

Java 创建对象

Java 创建对象 声明:Person p1; 声明一个对象,包括对象名称(p1)和对象类型(Person)。 实例化:p1 new Person(); 使用关键字new创建一个对象。 声明和实例化连起来可以写成:Person …

java 2d绘图 stroke_Java标准教程:Java 2D绘图--第4章使用Text

Java标准教程:Java 2D绘图--第4章使用Text本节介绍文本API的用法,以及他们的渲染能力。至今为止,您已经有了基本的Java 2D文本API,同时知道如何设置字体和位置,以及绘制文本。本节扩展了这些知识,同时更深入…

java 对象引用传递

java对象引用传递 引用传递也称为传地址,实际参数的引用(地址)被传递给方法中对应的形式参数,在方法中,对形式参数的操作实际上就是对实际参数的操作,方法执行中形式参数改变将影响实际参数。 传引用的数据…

java 定义和导入包

java定义和导入包: 为了更好地组织类,java提供了包机制。把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。同一个包中的类名不同,不同包中类名可以相同。同时调用两个不同包中相同类名的类时,应该加…

c++ int自动转换成无符号变量产生的问题

c int自动转换成无符号变量产生的问题 无符号对象不会小于零&#xff0c;尽管我们不会故意给无符号对象赋一个负值&#xff0c;但可能写出这样的代码。 1.当一个算数表达式中既有无符号数又有int值时&#xff0c;那个int值就会转换成无符号数。 #include<iostream> us…

php 年月日 中文,php Date()函数输出中文年月日时分秒_PHP教程

今天我以一个简单的利用date()函数输出中文年月日时分秒引出关于大多数据用户在使用php date()函数的一些问题与date()函数一些参数详解。当然了&#xff0c;PHP的DATE函数是不可能直接输出中文的年月日的&#xff0c;但可以用下面这种方法自己写一个函数。代码如下复制代码fun…

c++ 标准库类型string

标准库类型string string表示可变长的字符序列&#xff0c;使用string类型必须首先包含string头文件。 文章目录一、定义和初始化string对象二、操作string对象三、处理string对象中的字符一、定义和初始化string对象 如何初始化类的对象是由类本身决定的。 1.拷贝初始化&am…

php防止跨域提交,PHP防止跨域提交表单的简单示例

这篇文章主要为大家详细介绍了PHP防止跨域提交表单的简单示例&#xff0c;具有一定的参考价值&#xff0c;可以用来参考一下。感兴趣的小伙伴&#xff0c;下面一起跟随512笔记的小玲来看看吧&#xff01;在写用户注册的时候,一定要主要你的表单是否可以跨域提交.php中解决的方法…

php李捷,【问题解答】蝶泳手外划的作用

一直以来总是弄不明白&#xff0c;蝶泳手外划的作用&#xff0c;以及正确的外划动作&#xff0c;请指教。”我&#xff1a;先上两个图&#xff0c;您自己分析一下&#xff1a;我&#xff1a;蝶泳的划手路线和打腿的幅度和力度是相匹配的&#xff0c;如果打腿幅度小频率快&#…

php三维数组转换二维数组,php 三维数组转二维数组(多维数组变合拼二维数组)(foreach循环 数组叠加)...

/**************** function 三维数组转二维数组* Param: $array : 传入参数* Return: $tempArr 返回结果数组***************/function array3_to_array2($array){$array array_filter($array);$array array_values($array);foreach ($array as $orderKey >$orderVal){$c…

php ip2long bug,PHP代码ip2long 循环有关问题

PHP代码ip2long 循环问题print_r($dataIp);foreach ($dataIp as $key>$value) {$data[ip] $value;$data[iplong] bindec(decbin(ip2long($value)));print_r($data);}打印出来的结果为&#xff1a;引用Array([0] > 208.104.70.215[1] > 74.101.176.171[2…

Java 抽象类和抽象方法

Java 抽象类和抽象方法 抽象类是它的所有子类的公共属性的集合&#xff0c;是包含一个或多个抽象方法的类。使用抽象类可以充分利用这些公共属性来提高开发和维护程序的效率。抽象方法必须为public或protected。&#xff08;因为如果是private&#xff0c;则不能被子类继承&am…

ltrim函数php,php ltrim函数怎么用?

php ltrim()函数用于删除字符串左边的空格或其他预定义字符&#xff0c;语法为“ltrim(string,charlist)”&#xff0c;参数string指定需要处理的字符串&#xff0c;参数charlist指定要从字符串中删除哪些字符&#xff1b;然后返回已修改的字符串。php ltrim函数作用&#xff1…

php免费根据ip查城市,根据ip获取城市的方法

这个方法放到includes/lib_base.php的最下面/*** 根据ip获取城市的方法* param type $ip ip地址* return boolean|string**/function GetIpLookup($ip ){if(empty($ip)){return 请输入IP地址;}$res file_get_contents(http://int.dpool.sina.com.cn/iplookup/iplookup.php?f…

java strcpy,详解C语言中strcpy()函数与strncpy()函数的使用

C语言strcpy()函数&#xff1a;复制字符串头文件&#xff1a;#include 定义函数&#xff1a;char *strcpy(char *dest, const char *src);函数说明&#xff1a;strcpy()会将参数src 字符串拷贝至参数dest 所指的地址。返回值&#xff1a;返回参数dest 的字符串起始地址。附加说…

使用github+hexo搭建静态blog

解决了个人博客图片不显示问题。解决了打开页面产生404问题。学习了如何更换界面主题。学习了如何使用Git。 注&#xff1a;这篇文章仅仅是入个门&#xff0c;了解一下怎么使用githubhexo创个静态blog&#xff0c;具体blog细节比如个人介绍&#xff0c;评论插件&#xff0c;音…

java 安卓调试,Android Studio(二十一):调试你的应用

Android Studio包含了一个调试器&#xff0c;允许你调试运行在Android虚拟机或连接的Android设备的应用。通过Android Studio的调试器&#xff0c;你可以&#xff1a;1、 选择你调试设备的app2、 为你的代码设置断点3、 在运行时检测变量和表达式4、 截图和录像通过点击工具栏中…

java将属性练成字符串,Java中通过属性字符串名取属性内容

在Android开发当中资源的获取其实是间接通过R文件进行的,这个R文件就相当于是一个地址列表,存放着每个资源的地址那么如何快速高效的获取就是这篇文章要分析的问题假设我们有一个图片资源叫btn_bg那么将一个按钮背景设置为这个图片的方式就是btn.setBackgroundResource(R.drawa…