7-16-关键字、修饰符的使用

目录

关键字

super

this

修饰符  

类修饰符

访问修饰符

非访问控制符

方法修饰符

访问控制修饰符

非访问控制符

变量修饰符 

访问控制修饰符

非访问控制符


关键字

super

定义:super关键字代表的是父类空间的引用。(并不能代表对象,只是代表一个对象中的一块内存而已)

使用场景:

  1. 在继承关系的前提下,但构造方法不会被继承,子类会默认调用父类的无参构造方法;
  2. 使用super()或者super(参数)进行调用,必须出现在子类构造方法的第一行;
  3. 子父类存在着同名的成员(包括变量和方法)时,在子类中默认是访问子类的成员,可以通过super关键字指定访问父类的成员;

this

定义:代表的是对象的引用,也就是this在指向一个对象,所指向的对象就是调用该函数的对象引用。

使用场景:

  1. this只能在构造器或者非静态方法中使用,用于获得调用当前的构造器方法的对象引用;
  2. 在构造其中使用this(参数)时,会调用对象本身的其他构造器,但必须要位于构造函数中的第一个语句;
  3. 若存在同名的成员变量与局部变量时,在方法内部默认是访问局部变量的数据,可以通过this关键字指定访问成员变量的数据;但若只存在一个成员变量则会默认添加this;

使用案例:

  1. 使用this访问类的另一个方法或属性:
     public class Baby{
       public void wakeUp(){
          System.out.println("宝宝醒啦");
       }
    
       public void eat(){
          this.wakeUp();//使用this调用类中的其他方法
          System.out.println("吃东西");
       }
    }

注意:

  1.  this和super只能适用于构造方法与非静态方法,static 修饰的方法是属于类的,该方法的调用者可能是一个类,而不是对象.如果使用的是类来调用而不是对象,则 this就无法指向合适的对象.所以static 修饰的方法中不能使用this;
  2. super()与this()不能同时出现在一个构造函数中;

修饰符  

访问修饰符的访问权限
访问级别 访问控制修饰符 同类 同包 子类 不同包
公开 public
受保护的 protected ×
默认 没有修饰符 × ×
私有 private × × ×

 

 

 

 

 

  

protected:

  1. 允许子类访问定义在父类中的数据域或者方法,但不允许非子类访问;
  2. 不能在一个子类中访问另一个子类的protected方法.尽管他们继承同一个父类;

类修饰符

访问修饰符

公共类修饰符public,每个Java程序只能有一个类为pubic即主类,其他外部类无访问控制修饰符。但是一个类的内部类可以被其他访问控制修饰符protected、default、private修饰,相当于类的成员。

非访问控制符

  1. 抽象类修饰符 abstract :用 abstract 修饰符修饰的类,被称为抽象类。
  2. 最终类修饰符 final :当一个类不能被继承时可用修饰符 final修饰为最终类。

方法修饰符访问控制修饰符

 public、protected、默认、private,关于方法访问修饰符在上表中已经给出权限相关信息。

非访问控制符

1)抽象方法控制符abstract:没有方法体;

2)静态方法控制符 static :用static 修饰的方法。静态方法是属于整个类的类方法,所以不能操纵和处理属于某个对象的成员变量,而只能处理整个类的成员变量,即 static 方法只能处理 static的域;

3)最终方法控制符 final :用 final修饰的方法,方法不能被覆盖或重写;

4)私有方法控制符private:只能在当前类中使用;
5)同步方法控制符 synchronized :该修饰符主要用于多线程程序中的协调和同步。

变量修饰符 

访问控制修饰符

 public、protected、默认、private,关于访问修饰符在上表中已经给出权限相关信息。

非访问控制符

1)静态域修饰符static :属于类变量,所有该类的实例化对象访问的都是同一个数据,若有对象对其进行修改,则其他对象所获取的数据值也会被修改;

2)最终域修饰符 final:用于定义常量,在程序的整个运行过程中值都不会被改变。

 

 

 

 

你可能感兴趣的:(java)