Java基础之修饰符
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修饰的特点:
-
- 被类的所有对象共享 (这也是我们判断是否使用静态关键字的条件)
- 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 访问特点
非静态的成员方法
●能访问静态的成员变量
●能访问非静态的成员变量
●能访问静态的成员方法
●能访问非静态的成员方法
静态的成员方法
●能访问静态的成员变量
●能访问静态的成员方法
总结成一句话就是:静态成员方法只能访问静态成员
![](https://res.hc-cdn.com/ecology/9.3.130/v2_resources\images\global\blog-dialog.png)
华为开发者空间发布
让每位开发者拥有一台云主机
- 点赞
- 收藏
- 关注作者
评论(0)