揭秘Java静态关键字static与继承的三大关键字:this、super和extends
2023-10-13 20:54:56
静态、继承的基石:Java中的this、super、extends
Java作为面向对象编程的基石语言,离不开静态static 和继承三大 this、super、extends。理解它们对深入掌握Java至关重要。
一、静态:类属性的奥秘
1.1 修饰成员变量:静态变量
静态关键字static 赋予成员变量类属性 的特性,使其在内存中仅加载一次,为整个类共享,与任何特定对象无关。
特点:
- 全局性: 属于类属性,内存中仅加载一次。
- 共享性: 所有对象共享该变量,修改该变量的值,所有对象都会受到影响。
应用: 常用于存储全局数据,如系统配置、计数器、常量等,对所有对象均有效。
代码示例:
public class Counter {
private static int count = 0;
public static void increment() { count++; }
public static int getCount() { return count; }
}
解释: count是静态变量,所有Counter对象共享同一个count值。increment()递增计数器,getCount()获取当前值。
二、继承的三大关键字
继承是面向对象编程的关键概念,它允许子类继承父类的属性和行为。
2.1 this:引用当前对象
this关键字 用于引用当前对象 ,常用于以下场景:
- 访问当前对象的成员变量或方法。
- 从构造方法中调用另一个构造方法。
- 在方法中调用另一个重载的方法。
代码示例:
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public void introduce() {
System.out.println("My name is " + this.name + " and I am " + this.age + " years old.");
}
}
解释: this引用当前对象,访问其name和age成员变量,以及introduce()方法。
2.2 super:引用父类
super关键字 用于引用父类 ,常用于以下场景:
- 访问父类的成员变量或方法。
- 从子类的构造方法中调用父类的构造方法。
- 在子类的方法中调用父类的方法。
代码示例:
public class Student extends Person {
private String school;
public Student(String name, int age, String school) {
super(name, age); // 调用父类的构造方法
this.school = school;
}
@Override
public void introduce() {
super.introduce(); // 调用父类的方法
System.out.println("I study at " + this.school + ".");
}
}
解释: super引用父类,调用其name和age成员变量,以及introduce()方法。
2.3 extends:继承关系
extends关键字 用于建立继承关系 ,子类继承父类的成员变量和方法。
特点:
- 继承性: 子类继承父类的成员变量和方法。
- 重写性: 子类可以重写父类的方法。
- 扩展性: 子类可以扩展父类,添加新的功能或修改已有行为。
代码示例:
public class Animal {
public void move() { System.out.println("Animal is moving."); }
}
public class Dog extends Animal {
@Override
public void move() { System.out.println("Dog is running."); }
public void bark() { System.out.println("Dog is barking."); }
}
解释: Dog继承Animal,继承其move()方法,并重写该方法为running(),同时添加了新的bark()方法。
结论
静态static 、继承的三大关键字this、super、extends 是Java编程中至关重要的概念,它们为类属性、对象操作、继承关系提供了基础。熟练掌握这些关键字,将帮助你更深入地理解Java的面向对象特性,并编写更健壮、可维护的代码。
常见问题解答
-
静态变量和实例变量的区别是什么?
- 静态变量是类属性,所有对象共享,修改该变量的值会影响所有对象;而实例变量是对象属性,每个对象都有自己的副本,修改该变量的值不会影响其他对象。
-
this关键字的作用是什么?
- this关键字用于引用当前对象,访问其成员变量和方法,并从构造方法或重载方法中调用其他构造方法或方法。
-
super关键字的作用是什么?
- super关键字用于引用父类,访问其成员变量和方法,并从子类的构造方法或方法中调用父类的构造方法或方法。
-
extends关键字的作用是什么?
- extends关键字用于建立继承关系,允许子类继承父类的成员变量和方法,并可以重写或扩展父类。
-
使用静态变量和继承的好处是什么?
- 静态变量可以存储全局数据,简化数据共享和维护;继承可以实现代码复用,减少冗余,并提高可扩展性。