Java基础之修饰符

举报
袁袁袁袁满 发表于 2022/04/12 21:00:26 2022/04/12
【摘要】 1.1 权限修饰符1.被public修饰的域和方法,不管在所属类所在的包还是在其他包,都可以被所属类或者所属类对象直接访问。2.默认访问权限(又叫包访问权限 friendly, java语言中是没有friendly这个修饰符的,这样称呼应该是来源于c++ )修饰的域或方法,只能在所属类的包被直接访问,在其他包不能直接访问。其访问的范围就如它名称一样—包访问权限,只能在所属包内访问。3.被p...

1.1 权限修饰符

1.被public修饰的域和方法,不管在所属类所在的包还是在其他包,都可以被所属类或者所属类对象直接访问。

2.默认访问权限(又叫包访问权限 friendly, java语言中是没有friendly这个修饰符的,这样称呼应该是来源于c++ )修饰的域或方法,只能在所属类的包被直接访问,在其他包不能直接访问。其访问的范围就如它名称一样—包访问权限,只能在所属包内访问。

3.被protected修饰的域或方法,其直接访问的范围与包访问权限的一样,基本没有差别。

4.被private修饰的域或方法,只能在自己所属类才能被直接访问。而即使另外一个类与其同在一个包中,前者也不能直接访问。

在这里插入图片描述

1.2 状态修饰符

  • final(最终态)
  • static(静态)

1.2.1 final的特点

  • final 关键字是最终的意思,可以修饰成员变量,成员方法,类
  • final修饰的特点
    • 1.修饰方法:表示该方法是最终方法,不能被重写
    • 2.修饰变量:表示该变量是常量,不能被再次赋值
    • 3.修饰类:表示改类是最终类,不能被继承
  • 父类:
package ceshi;

public final class Fu {
    public final void method() {
        System.out.println("Fu中method方法被调用");
    }

}
  • 子类:
package ceshi;

public class Zi extends Fu{ //报错了,不能被继承

    public final int age = 20;
    public void show() {
//        age = 100; 被final修饰为常量无法改变
        System.out.println(age);
    }
}

1.2.1 final修饰局部变量

  • 变量是基本类型:final修饰的是基本类型的数据值,不能改变
  • 变量是引用类型:final修饰的是引用类型的地址值,不能改变,但是地址里面的内容可以改变
  • Student类
package ceshi;

public class Student {
    public int age = 20;
}
  • 测试类
package ceshi;

public class Demo {
    public static void main(String[] args) {
        //final修饰基本类型变量
        final int age =20;
//        age = 100; //final修饰后就不能重新赋值
        System.out.println(age); //20

        //final修饰引用类型变量
        final Student s = new Student(); //final修饰的s,s的地址不能变,s.age是内容
        s.age =100;
        System.out.println(s.age); //100

        //反证
//        s = new Student(); //报错
    }
}

1.2.2 static关键字

  • static关键字是静态的意思,可以修饰成员变量,成员方法

  • static修饰的特点

      1. 被类的所有对象共享 (这也是我们判断是否使用静态关键字的条件)
    • 2.可以通过 类名调用(推荐使用);也可以通过对象名调用
  • 按照有无static修饰,成员变量和方法可以分为

  • (一)成员变量
    1、静态成员变量(类变量):有static修饰的成员变量称为静态成员变量,也叫类变量,属于类本身,直接用类名访问即可

    2,、实例成员变量:无static修饰的成员变量称为实例成员变量,属于类的每个对象的,必须用类的对象来访问

  • (二)成员方法
    1、静态方法:有static修饰的成员方法称为静态方法,也叫类方法,属于类本身的,直接用类名访问即可

    2、实例方法:无static修饰的成员方法称为实例方法,属于类的每个对象的,必须用类的对象来访问

  • Student类

package ceshi;

public class Student {
    public String name;
    public int age;
//1:    public String university;
    //2
    public static String university;

    public void show() {
        System.out.println(name+","+age+","+university);
    }
}
  • 测试类:
package ceshi;

public class StaticDemo {
    public static void main(String[] args) {
        //2:被static修饰的变量,推荐用类名访问
        Student.university="清华大学";

        Student s = new Student();
        s.name = "yy";
        s.age = 20;
//1        s.university = "清华大学";
        s.show(); //yy,20,清华大学

        Student s1 = new Student();
        s1.name = "yy1";
        s1.age = 30;
        s1.show(); //1: yy1,30,null
        //2: yy1,30,清华大学
    }
}

1.2.2 static 访问特点

非静态的成员方法
●能访问静态的成员变量
●能访问非静态的成员变量
●能访问静态的成员方法
●能访问非静态的成员方法

静态的成员方法
●能访问静态的成员变量
●能访问静态的成员方法

总结成一句话就是:静态成员方法只能访问静态成员

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。