静态(static)与方法重写

在Java中,static是类与对象以及方法中非常重要的一个关键字,方法重写是继承的一个重要应用,可以有效减少代码量,是学习理解多态的基础,本文阐述static关键字和方法重写的概念和作用

一、static关键字:类的静态成员

在Java中,static关键字用于声明类的静态成员,包括静态变量和静态方法。静态成员属于类本身,而不是类的任何特定实例。这意味着,无论创建多少个类的实例,静态成员都只有一份拷贝,被所有实例共享。

静态变量的用法

静态变量通常用于存储类级别的信息,这些信息对于类的所有实例都是通用的。例如,我们可以使用静态变量来跟踪一个类被实例化的次数。

public class MyClass {  
    private static int instanceCount = 0;  
  
    public MyClass() {  
        instanceCount++;  
    }  
  
    public static int getInstanceCount() {  
        return instanceCount;  
    }  
}  
  
public class Test {  
    public static void main(String[] args) {  
        MyClass obj1 = new MyClass();  
        MyClass obj2 = new MyClass();  
        System.out.println(MyClass.getInstanceCount()); // 输出 2  
    }  
}

在这个例子中,instanceCount是一个静态变量,它跟踪MyClass类被实例化的次数。无论我们创建多少个MyClass的实例,instanceCount都只有一份拷贝,并且被所有实例共享。

静态方法的用法

静态方法是属于类的方法,而不是类的任何对象的方法。这意味着我们可以在没有创建类的实例的情况下调用静态方法。静态方法通常用于执行与类相关但与类的任何特定实例无关的操作。

public class MathUtils {  
    public static int add(int a, int b) {  
        return a + b;  
    }  
}  
  
public class Test {  
    public static void main(String[] args) {  
        int result = MathUtils.add(5, 10);  
        System.out.println(result); // 输出 15  
    }  
}

在这个例子中,add是一个静态方法,它属于MathUtils类。我们可以在没有创建MathUtils类的实例的情况下调用add方法。

二、方法重写:子类对父类方法的重写

方法重写是面向对象编程中的一个核心概念。它允许子类提供一个特定于其自身的方法实现,这个方法在父类中已经被定义。当子类的方法与父类中的方法具有相同的方法名称、返回类型及参数列表时,我们说子类的方法重写了父类的方法。

方法重写的规则

  1. 方法名称、返回类型及参数列表必须完全相同。

  2. 访问修饰符不能比父类中被重写的方法的访问修饰符更严格。

  3. 抛出的异常类型不能比父类中被重写的方法抛出的异常类型更广泛。

方法重写的用途

方法重写允许子类根据自身的需要定制父类的行为。这是实现多态性的关键机制之一。通过方法重写,我们可以使一个父类引用指向一个子类对象,并调用子类的方法实现。

class Animal {  
    public void move() {  
        System.out.println("动物可以移动");  
    }  
}  
  
class Dog extends Animal {  
    @Override  
    public void move() {  
        System.out.println("狗可以跑和走");  
    }  
}  
  
public class Test {  
    public static void main(String[] args) {  
        Animal myAnimal = new Dog();  
        myAnimal.move(); //  "狗可以跑和走"  
    }  
}

在这个例子中,Dog类重写了Animal类的move方法。当我们使用Animal类型的引用指向Dog对象并调用move方法时,实际上调用的是Dog类的move方法实现。

三、static方法与方法重写的交互

static方法不能被重写为非静态方法(反之亦然)。这是因为静态方法是属于类的,而非类的实例,所以它们不具有多态性。多态性是面向对象编程的一个核心概念,它允许子类对象替换父类对象,同时保持程序的正确性。由于静态方法不属于任何对象实例,它们不能表现出多态性。

、结论

static关键字和方法重写是Java编程中的两个重要概念。static关键字用于声明类的静态成员,包括静态变量和静态方法。静态成员属于类本身,而不是类的任何特定实例。方法重写则允许子类提供一个特定于其自身的方法实现,这个方法在父类中已经被定义。尽管static方法不能被重写,但它们在类级别的操作中发挥着重要作用。

  • 14
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值