关键字

1. this关键字

成员变量的隐藏

如果局部变量和成员变量同名,成员变量被隐藏

class a{
  int x=98,y;
  void f(){
    int x=3;
    y=x; //y得到的值是3,不是98
  }
}

this关键字可以在方法中使用被隐藏的成员变量:

class a{
  int x=98,y;
  void f(){
    int x=3;
    y=this.x;
//this.x表示成员变量x

2. static关键字

  • static修饰的变量和方法称作类变量和类方法。(静态方法)(不用static修饰的叫实例方法)
  • 本质:类变量/类方法 是属于整个类的,而不是某个实例对象的。
  • 格式:static 类型 变量名;static 类型 方法。(static int x; static void f(){})
  • 类变量和类方法可以通过类名直接调用,也可以通过对象来调用。(对象也包含在该类中)
  • 注意:类方法中不能使用thissuper
不同对象的实例变量分配到不同的内存空间,但是所有对象的类变量分配到同一处内存,改变其中一个对象的该类变量会影响其他对象的该类变量,即对象共享类变量。
实例方法在该类创建对象后才分配入口地址;类方法在类的字节码加载到内存时就分配了入口地址,可以通过类名调用,因此类方法可以避免创建对象浪费内存

3. 访问限制修饰符

同一个类 同一个包 不同包中的子类 不同包中的非子类
private yes
默认 yes yes
protected yes yes yes
public yes yes yes yes
  • private和protected不能修饰类
  • 访问权限从高到低public->protected->private

4. super关键字

  • 作用:在子类中调用被子类隐藏的成员变量或方法。

4.1 调用父类的构造方法

  • 子类不继承父类的构造方法。
  • super必须是子类构造方法中的头一条语句
  • 用法:super(参数)

4.2 操作被隐藏的成员变量和方法

用法:super.x , super.f()

  • 注意:

  • 如果子类构造方法没有写super来调用父类构造方法,系统默认有super();语句来调用父类不带参数的构造方法
  • 若类中定义了一个或多个构造方法,系统不提供默认的构造方法(不带参数的构造方法),因此在父类中定义多个构造方法时,要有一个不带参数的构造方法,否则子类省略super时会出错。

5. final关键字

final类

final class A{
...
}

final类不能被继承,即不能有子类

final方法

final修饰的父类方法,不能被子类重写

final常量

final修饰的成员变量或局部变量为常量,在声明时必须给指定的值,且不能改变

6. abstract关键字

abstract修饰的类叫抽象类,例如

abstract class A{
...
}

抽象方法,只允许声明,不允许实现,不允许final和abstract同时修饰一个方法
abstract int min(int x, int y);

  • 抽象类中可以没有抽象方法,但是有抽象方法的类必须是抽象类
  • 抽象类不能用new运算符创建对象
    如果一个非抽象类继承了一个抽象类,必须重写父类的抽象方法,给出方法体,去掉abstract修饰。
  • abstract类的对象可以作为子类的上转型对象来调用子类重写的方法。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容