首页 > 编程语言 >java(8)访问修饰符

java(8)访问修饰符

时间:2023-01-31 07:55:07浏览次数:39  
标签:java 修饰符 System 访问 static println 静态方法 public out

1.1 public
任何其它类、对象只要可以看到这个类的话,那么它就可以存取变量的数据,或使用方法
只有在使用 public 访问修饰符时,类的成员才可被同一包或不同包中的所有类访问。
也就是说,public 访问修饰符可以使类的特性公用于任何类。

1.2 protected
如果一个类中变量或方法有修饰字 protected,同一类,同一包可以使用。不同包的类要使用,必须是该类的子类可以存取变量或调用。
如果希望一个成员在当前包外可见,但仅仅是成员所在类的子类直接可见,就要使用 protected 修饰该成员。

1.3 private
private 访问修饰符是限制性最大的一种访问修饰符。
被声明为 private 的成员只能被此类中的其他成员访问,不能被类外看到。
继承体系结构中最高级别的类决不会被声明为 private 类。

1.4 defaulted
类是缺省的,该类具有包访问权限,只能被同一包中的其它类访问

2. static
用 static 修饰符修饰,可以是变量、方法或代码块。
类中的静态变量、方法或代码块属于类,而不属于某个特定的对象。
类的静态成员可以与类的名称一起使用,而无需创建类的对象。
静态变量或方法也称为类变量或类方法。

2.1 静态变量

 1 public class TestDemo {
 2     static int COUNT = 100;
 3 }
 4 public class Test {
 5     public static void main(String[] args) {
 6         System.out.println(TestDemo.COUNT);//可以直接通过类名进行调用,推荐使用
 7         TestDemo ts = new TestDemo();
 8         System.out.println(ts.COUNT);//也可以通过某一对象尽心调用
 9     }
10 }

2.2 静态方法

与静态方法相关的几个要点:
– 类的静态方法只能访问其他的静态成员
– 静态方法没有 this
– 静态方法不能被覆盖为非静态方法

 1 public class TestDemo {
 2     static int COUNT = 100;
 3     int i = 10;
 4     public static void say() {
 5         // System.out.println(i);//静态方法中只能访问静态修饰的属性和方法
 6         System.out.println(COUNT);
 7     }
 8     // main方法本身就是一个静态方法,是一个特殊的静态方法
 9     public static void main(String[] args) {
10             say();// 静态方法中可以访问静态方法
11     }    
12  }

2.3 静态代码块

形式:static { ……}
如果需要通过计算来初始化静态变量,可以声明一个静态块。
静态块仅在该类被加载时执行一次。

1 public class TestDemo {
2     private static int COUNT = 100;
3     static {
4         System.out.println(COUNT);
5     }
6     public static void main(String[] args) {
7         System.out.println(COUNT);
8     } 
9 }

 

java类属性和对象属性的初始化顺序:

  1. 首先找到类中的所有静态声明语句(不管位置在哪),把他们初始化为缺省值;
  2. 然后再按照书写顺序依次处理每一个static的东西;
  3. 把对象属性初始化为缺省值;
  4. 按照书写顺序依次处理每一个对象属性的初始化语句最后执行构造函数;
     1 public class Test {
     2     // 代码块
     3     {
     4         System.out.println("3");
     5     }
     6     {
     7         System.out.println("4");
     8     }
     9     static {
    10         System.out.println("1");
    11     }
    12     static {
    13         System.out.println("2");
    14     }
    15     public Test() {
    16         System.out.println("构造函数");
    17     }
    18     public static void main(String[] args) {
    19         new Test();
    20     } 
    21 }

    输出:1.2.3.4.构造函数

3. final


final 关键字:final 修饰符可应用于类、方法和变量。
1、final 在应用于类、方法和变量时意义是不同的,但本质是一样的:final 表示不可改变。
2、声明为 final 的类不能被继承。
3、声明的方法不能被重写,如果一个类是 final 类,那么它的所有方法都隐式的是 final 方法。
4、声明的变量必须赋初值,它实质上就是一个常量。


final修饰的对象或者变量在使用之前必须要初始化,否则报错

final修饰的对象或者变量如果在定义的时候没有初始化,则虚拟机会自动根据其类型初始化成对应的值


————————————————
版权声明:本文为CSDN博主「振华OPPO」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_42257666/article/details/114115551

标签:java,修饰符,System,访问,static,println,静态方法,public,out
From: https://www.cnblogs.com/zhbx/p/17077702.html

相关文章

  • java(7)
    封装封装是JAVA面向对象的特点的表现,封装是一种信息隐蔽技术。它有两个含义:即把对象的全部属性和全部服务结合在一起,形成一个不可分割的独立单位;以及尽可能隐藏对象的内......
  • java(6)Java 对象间关系(依赖、关联、聚合、组合)
    依赖(Dependency)依赖关系,是类与类之间的联接。依赖关系表示一个类依赖于另一个类的定义。使用关系。一般情况下,依赖关系在Java语言中体现为局域变量、方法的形参,或者对......
  • java(5)常用的 dos 命令
    查看当前目录是有什么内容dirdirdird:\abc2\test200 切换到其他盘下:盘符号cd:changedirectory案例演示:切换到c盘cd/Dc: 切换到当前盘的其他目录下(使......
  • java(3)变量和常量
     变量的类型只有引用数据类型和基本数据类型(byte,short,char,int,long,float,double,char)两种。 ......
  • java(1)java语言特性
    简单性:相对于其他编程语言而言,java较为简单,例如:java不再支持多继承,C++是支持多继承的,多继承比较复杂,C++中有指针,java中屏蔽了指针的概念,避免了绝大部分的指针越界和内存泄......
  • javascript:js 读写 style属性(DOM模型)
    javascript:js读写style属性(DOM模型)    一、说明: 1、js读取style属性,需要去掉css格式中的“-”,“-”后面的第一个字母大写。js中的减号(“-”),与css中属性......
  • 洛谷oj题单【入门1】顺序结构-入门难度(Java)
    洛谷oj题单【入门1】顺序结构-入门难度(Java)来源:https://www.luogu.com.cn/training/100#problemsB2002Hello,World!publicclassMain{  publicstaticvoidmain......
  • NAPT网络结构下TCP/UDP/ICMP访问外网原理思考
    背景作为程序员,应该都听说过NAT(NetworkAddressTransfer,网络地址转换)这一技术名词,并或多或少大概知道其原理与作用--NAT是用于解决IPv4地址不够用,保证我们能够在IPv6普......
  • 痛恨 JavaScript 每一天(缺少指针)
    背景二叉搜索树,插入节点JavaScript解法functioninsertNode(root,newNode){if(newNode.key<root.key){if(root.left){insertNode(r......
  • java多线程基础小白指南--线程的状态
    线程的状态比较混乱,网上的资料也是五花八门,这时候就要参考注意截图中的最后一句话,很多人把jvm中线程状态与实际上的os线程状态搞混了,所以才会有很多乱七八糟的状态出现。......