不同的关键字


前言

提示:修饰符这些多了容易搞混


提示:以下是本篇文章正文内容,下面案例可供参考

一、权限修饰符

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修饰的类,要引用里面的方法,只能通过类名来调用。


总结

提示:后续再增加。

Guess you like

Origin blog.csdn.net/m0_51064043/article/details/120785810