目录
关键字
super
定义:super关键字代表的是父类空间的引用。(并不能代表对象,只是代表一个对象中的一块内存而已)
使用场景:
- 在继承关系的前提下,但构造方法不会被继承,子类会默认调用父类的无参构造方法;
- 使用super()或者super(参数)进行调用,必须出现在子类构造方法的第一行;
- 子父类存在着同名的成员(包括变量和方法)时,在子类中默认是访问子类的成员,可以通过super关键字指定访问父类的成员;
this
定义:代表的是对象的引用,也就是this在指向一个对象,所指向的对象就是调用该函数的对象引用。
使用场景:
- this只能在构造器或者非静态方法中使用,用于获得调用当前的构造器方法的对象引用;
- 在构造其中使用this(参数)时,会调用对象本身的其他构造器,但必须要位于构造函数中的第一个语句;
- 若存在同名的成员变量与局部变量时,在方法内部默认是访问局部变量的数据,可以通过this关键字指定访问成员变量的数据;但若只存在一个成员变量则会默认添加this;
使用案例:
- 使用this访问类的另一个方法或属性:
public class Baby{ public void wakeUp(){ System.out.println("宝宝醒啦"); } public void eat(){ this.wakeUp();//使用this调用类中的其他方法 System.out.println("吃东西"); } }
注意:
- this和super只能适用于构造方法与非静态方法,static 修饰的方法是属于类的,该方法的调用者可能是一个类,而不是对象.如果使用的是类来调用而不是对象,则 this就无法指向合适的对象.所以static 修饰的方法中不能使用this;
- super()与this()不能同时出现在一个构造函数中;
修饰符
访问级别 | 访问控制修饰符 | 同类 | 同包 | 子类 | 不同包 |
公开 | public | √ | √ | √ | √ |
受保护的 | protected | √ | √ | √ | × |
默认 | 没有修饰符 | √ | √ | × | × |
私有 | private | √ | × | × | × |
protected:
- 允许子类访问定义在父类中的数据域或者方法,但不允许非子类访问;
- 不能在一个子类中访问另一个子类的protected方法.尽管他们继承同一个父类;
类修饰符
访问修饰符
公共类修饰符public,每个Java程序只能有一个类为pubic即主类,其他外部类无访问控制修饰符。但是一个类的内部类可以被其他访问控制修饰符protected、default、private修饰,相当于类的成员。
非访问控制符
- 抽象类修饰符 abstract :用 abstract 修饰符修饰的类,被称为抽象类。
- 最终类修饰符 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:用于定义常量,在程序的整个运行过程中值都不会被改变。