文章目录
前言
提示:修饰符这些多了容易搞混
提示:以下是本篇文章正文内容,下面案例可供参考
一、权限修饰符
1.private
它可以修饰成员变量和成员方法,被它修饰的成员只能在本类中被访问。
代码如下(示例):
public class A {
}
public class B extends A{
private void a(){
System.out.println("B被调用");
}
public static void main(String[] args) {
B b = new B();
b.a();//不报错
}
}
public class C {
public static void main(String[] args) {
B b = new B();
b.a();//报错 a()的修饰符为private
}
}
2.默认
被他修饰的成员,只有在同一个类里面或者在同一个包下面的才能访问
代码如下(示例):
public class A {
void D(){
System.out.println("A被使用");
}
}
import day8.A;
public class C {
public static void main(String[] args) {
A a = new A();
a.D();
}
}
先看类分别在哪个位置,报的错是:‘D()’ is not public in ‘day8.A’. Cannot be accessed from outside package
3.protected
被他修饰的成员,只有在同一个类里面或者在同一个包下面,在不同包下的子类才能访问
代码如下(示例):
public class A {
protected void D(){
System.out.println("A被使用");
}
}
import day9.A;
public class B extends A {
private void a(){
System.out.println("B被调用");
}
public static void main(String[] args) {
B b = new B();
b.D();
}
}
4.public
被它修饰的成员所有用户都可以调用
代码如下(示例):
public class A {
}
public class B extends A{
public void a(){
System.out.println("B被调用");
}
public static void main(String[] args) {
B b = new B();
b.a();//不报错
}
}
public class C {
public static void main(String[] args) {
B b = new B();
b.a();//不报错 a()的修饰符为public
}
}
5.它们的访问权限
public > 默认 > protected>私有
二、this和super
1.this
代表本类对象的引用,用于指代成员变量,方法被哪个对象调用,this就代表哪个对象;
this.成员变量 - 访问本类成员变量
this.成员方法 - 访问本类成员方法
this(…) - 访问本类构造方法
2.super
代表父类存储空间的标识(可以理解为父类对象引用)
super.成员变量 - 访问父类成员变量
super.成员方法 - 访问父类成员方法
super(…) - 访问父类构造方法
3.代码实现
代码如下(示例):
public class A {
public int age=100;
}
public class B extends A {
public int age = 20;
public void show(){
int age = 30;
System.out.println(age);
//访问本类的成员变量age
System.out.println(this.age);
//访问父类的成员变量age
System.out.println(super.age);
}
public static void main(String[] args) {
B b = new B();
b.show();
}
}
三、状态修饰符
1.final
- final修饰类
- 该类不能被继承,但可以有父类
- final修饰方法
- 该类不能被重写
- final修饰变量
- 该变量变成一个常量
- fianl修饰基本数据类型变量
- 该基本类型的数据值不能发生改变
- fianl修饰引用数据类型变量
- 该引用类型的地址值不能发生改变,但是地址里面的内容是可以发生改变的
- 总结成一句话就是:用它修饰,都不改变
2.static
-
非静态的成员方法
- 能访问静态的成员变量
- 能访问非静态的成员变量
- 能访问静态的成员方法
- 能访问非静态的成员方法
-
静态的成员方法
- 能访问静态的成员变量
- 能访问静态的成员方法
-
总结成一句话就是:静态成员方法只能访问静态成员
被static修饰的类,要引用里面的方法,只能通过类名来调用。
总结
提示:后续再增加。