c语言编程笔录

首页 >   > 笔记大全

笔记大全

Java面向对象之继承、构造方法、重写、重载怎么实现

更新时间:2023-10-22

继承的实现

在Java中,继承是一种面向对象的重要特性,通过继承,一个子类可以继承父类的属性和方法,并且可以对其进行修改或扩展。

要实现继承,首先需要定义一个父类,然后使用关键字“extends”来指定子类继承自父类。子类可以继承父类的非私有属性和方法,包括构造方法、实例变量和实例方法。

例如,定义一个父类Person:

public class Person {
    private String name;
    private int age;
    
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    public void sayHello() {
        System.out.println("Hello, I'm " + this.name);
    }
}

然后定义一个子类Student,继承自Person:

public class Student extends Person {
    private String school;
    
    public Student(String name, int age, String school) {
        super(name, age);
        this.school = school;
    }
    
    public void study() {
        System.out.println("I'm studying at " + this.school);
    }
}

在上述例子中,子类Student继承了父类Person的构造方法和实例方法sayHello,并添加了自己的实例变量school和实例方法study。

构造方法的实现

构造方法用于创建对象时进行初始化,它的名称与类名相同,没有返回类型。在Java中,如果不定义构造方法,编译器会默认为类提供一个无参的构造方法。

要实现构造方法重载,可以在一个类中定义多个构造方法,它们具有不同的参数列表。重载构造方法可以根据实际需求进行对象的初始化。

例如,在上面的例子中,Person类的构造方法需要传入name和age两个参数,而Student类继承了Person类后,还可以添加一个school参数。这样可以通过不同的构造方法来创建不同的对象。

public class Person {
    private String name;
    private int age;
    
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    // 构造方法重载,不传入age参数
    public Person(String name) {
        this.name = name;
        this.age = 0;
    }
}

在上面的示例中,定义了两个构造方法,一个是传入name和age的,另一个是只传入name的。这样就可以根据需要选择使用哪个构造方法来创建Person对象。

重写的实现

重写是指子类重写(覆盖)父类的方法,使得子类中的该方法具有不同的实现。在Java中,子类可以重写父类中的非私有非静态方法。

要实现方法的重写,子类中的方法名称、参数列表和返回类型必须与父类中的方法相同。关键字“@Override”用于提醒编译器,明确表示当前方法是重写父类的方法。

例如,在Person类中定义一个sayHello方法,Student类可以覆盖该方法并实现自己的sayHello逻辑。

public class Person {
    // 其他代码省略
    
    public void sayHello() {
        System.out.println("Hello, I'm " + this.name);
    }
}

public class Student extends Person {
    // 其他代码省略
    
    @Override
    public void sayHello() {
        System.out.println("Hello, I'm a student and my name is " + this.name);
    }
}

在上述示例中,Student类重写了Person类的sayHello方法,并添加了自己的逻辑。当调用Student对象的sayHello方法时,会执行子类中的sayHello方法而不是父类的。

重载的实现

重载是指在同一个类中使用相同的方法名,但是参数列表不同的情况。通过重载,可以为方法提供更多的灵活性,以适应不同的需求。

要实现方法的重载,可以在同一个类中定义多个方法,它们具有相同的名称但参数列表不同。参数列表可以包括参数的类型、个数和顺序等。

例如,在上述的Person类中,我们可以添加一个重载的sayHello方法,使其可以接受一个参数age。

public class Person {
    // 其他代码省略
    
    public void sayHello() {
        System.out.println("Hello, I'm " + this.name);
    }
    
    public void sayHello(int age) {
        System.out.println("Hello, I'm " + this.name + " and I'm " + age + " years old");
    }
}

在上面的示例中,我们在Person类中定义了两个名称相同但参数列表不同的sayHello方法。当调用sayHello方法时,根据传入的参数列表,编译器会自动选择合适的方法进行调用。

总结

继承、构造方法、重写和重载是Java面向对象编程中常用的技术。通过继承,子类可以继承父类的属性和方法,并对其进行修改或扩展。构造方法用于初始化对象,在一个类中可以定义多个构造方法来满足不同的需求。重写是指子类覆盖父类的方法,使得子类可以具有不同的实现。重载是指在一个类中使用相同的方法名,但是参数列表不同的情况。

继承、构造方法、重写和重载的实现可以使代码更加灵活和可扩展,提高了代码的复用性和可维护性。在编写代码时,要根据实际需求来选择使用合适的技术,以便构建出高质量的面向对象程序。