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(){//错误}
}

Java 作用域修饰符相关推荐

  1. 1.15 Java访问控制修饰符(public、 private、protected 和 friendly)

    在 Java 语言中提供了多个作用域修饰符,其中常用的有 public.private.protected.final.abstract.static.transient 和 volatile,这些修 ...

  2. 10 - java 权限修饰符

    java权限修饰符 作用域 当前类 同package 子孙类 其他package public √ √ √ √ protected √ √ √ × friendly(defult) √ √ × × p ...

  3. Java访问控制修饰符详解

    在 Java 语言中提供了多个作用域修饰符,其中常用的有 public.private.protected.final.abstract.static.transient 和 volatile,这些修 ...

  4. java的修饰符_java默认的修饰符是什么

    默认什么都不加,就是default(不用把default写出来). 意思就是只能由跟这个类在同一个包中的类来访问,比private限制更少,但比protected限制更多.' Java访问修饰符包括p ...

  5. java默认修饰符_java默认方法的修饰符是什么

    默认什么都不加,就是default(不用把default写出来). 意思就是只能由跟这个类在同一个包中的类来访问,比private限制更少,但比protected限制更多.' Java访问修饰符包括p ...

  6. Java访问控制修饰符详解( public、 private、protected 和 friendly)

    在 Java 语言中提供了多个作用域修饰符,其中常用的有 public.private.protected.final.abstract.static.transient 和 volatile,这些修 ...

  7. java默认修饰符_java默认的修饰符是什么

    默认什么都不加,就是default(不用把default写出来). 意思就是只能由跟这个类在同一个包中的类来访问,比private限制更少,但比protected限制更多.' Java访问修饰符包括p ...

  8. java final修饰符_java final修饰符详解,final修饰方法

    之前给大家讲过java final修饰符final修饰变量方面的知识,那么下面要继续给大家讲到的就是final修饰方法方面的知识,一起来了解一下吧. final修饰的方法不能被重写,假如因为一些原因, ...

  9. java访问修饰符详解——学java,零基础不怕,不只要理论,更要实践+项目,a href=http://www.bjweixin.com太原维信科技提供 /a...

    java访问修饰符详解--学java,零基础不怕,不只要理论,更要实践+项目 <a href=http://www.bjweixin.com>太原维信科技提供 </a> pub ...

最新文章

  1. R语言plotly可视化:plotly可视化累积cumulative直方图(Cumulative Histogram)
  2. 鸟哥的Linux私房菜(基础学习,服务器架设)
  3. wamp php启动不成功,wamp的mysql 启动失败解决
  4. 计算机无法识别读卡器怎么办,电脑无法识别读卡器怎么办
  5. 如何在苹果Mac上设置实时文本(RTT)?
  6. 谈谈一些有趣的CSS题目(十一)-- reset.css 知多少?
  7. 大华摄像头解码 ffmpeg_解码矩阵配套液晶拼接屏系统解决安防行业设备过于复杂的问题...
  8. ESP8266 WIFI 模块连接OneNet测试
  9. matlab中如何去掉多行注释_MATLAB中多行注释的三种方法
  10. 小学计算机课评课稿,有关于小学信息技术评课稿范文
  11. 【180629】VC++ QQ头像连连看游戏源码
  12. Python用户画像词云图生成并集成到django网站
  13. xbox360 无线手柄 通过cmd_vel控制小乌龟运动
  14. python+gdal+numpy计算ndvi
  15. php根据当前日期判断法定节假日_PHP 判断当前日期是否是法定节假日或者休息日 (原)...
  16. svg中 path标签的d属性
  17. 铸造数据安全堤坝,华为云数据灾备解决方案就是强
  18. Unity 2D平面显示3D模型(RenderTextrue)
  19. 花了三年时间开发的四轴运动控制卡,可以替代mcx314运动控制IC
  20. JavaScript 插件

热门文章

  1. 英语笔记:写作:Nothing succeeds without a strong will
  2. 第五章 计算机故障诊断与排除
  3. centos离线部署gitlab
  4. java日期用什么属性_java日期以及使用Java反射机制遍历实体类的属性和类型
  5. linux java 文件夹创建失败_Linux文件夹文件创建、删除
  6. 已知三个用不同数制表示的整数_数学一轮复习26,数列的概念及简单表示法,常用方法及具体策略...
  7. C语言填空题10道,3道C语言填空题,谁帮忙做下,谢谢
  8. mysql 中函数如何转存_mysql 导入导出数据库以及函数、存储过程 【转】
  9. jquery设置video的宽度_jquery html5 视频播放控制代码
  10. linux mei swap,Linux swapoff命令