类的继承、方法的重写与重载

目录

类的继承、方法的重写与重载

继承

继承的本质

如何完成继承

格式

例子

父类:

子类:

测试类:

运行结果:

继承层次

Java类不能互相继承

单继承与多子类

方法的重写与重载

什么是方法

Java的修饰符

public

protected

default(无修饰符)

private

方法的重载

例子:

方法的重写

例子:

为什么要进行重写


类的继承、方法的重写与重载

在Java编程中,类的继承、方法的重写与重载是面向对象编程的核心概念。这些特性使得代码可以更易于维护和扩展,同时也提高了代码的复用性和灵活性。

继承

继承的本质

继承是面向对象编程中的一种机制,允许一个类(子类)继承另一个类(父类)的属性和方法。继承的本质是为了实现代码的复用和扩展。通过继承,子类不仅可以使用父类中已有的方法和属性,还可以根据需要扩展新的方法和属性。

如何完成继承

在Java中,继承是通过extends关键字来实现的。子类通过声明extends 父类名来继承父类。例如:

class Parent {

    void show() {

        System.out.println("父类方法");

    }

}
class Child extends Parent {

    void display() {

        System.out.println("子类方法");

    }

}

调用依次调用父类方法和子类方法

Child dog = new Child();

dog.show();  // 调用父类的方法

dog.display(); // 调用子类的方法

格式

class 子类名 extends 父类名 {

    // 子类自己的属性和方法

}

例子

父类:
class Animal {

    void eat() {

        System.out.println("动物吃饭");

    }

}
子类:
class Dog extends Animal {

    void bark() {

        System.out.println("小狗在叫");

    }

}
测试类:
public class ceshi {

    public static void main(String[] args) {

        Dog dog = new Dog();

        dog.eat();  // 调用父类的方法

        dog.bark(); // 调用子类的方法

    }

}
运行结果:

继承层次

在Java的继承层次中,有以下规则:

Java类不能互相继承

在Java中,一个类只能有一个直接的父类,不能同时继承多个父类。这意味着继承是单向的,一个子类不能有多个直接父类。

单继承与多子类

一个类可以作为多个子类的父类(即一个类可以被多个子类继承),但一个子类只能继承一个父类。这种机制称为单继承。也就是说,一个父类可以有多个子类(即“一个父亲可以有多个儿子”),但每个子类(“儿子”)只能有一个直接的父类(“父亲”)。

例如:

class Animal {

    void eat() {

        System.out.println("动物吃饭");

    }

}



class Dog extends Animal {

    void bark() {

        System.out.println("小狗在汪汪");

    }

}



class Cat extends Animal {

    void meow() {

        System.out.println("小猫在喵喵");

    }

}

在这个例子中,Dog和Cat都是Animal的子类,说明Animal这个类可以被多个类作为父类继承(Dog和Cat),但Dog和Cat各自只能继承一个父类(即Animal),这体现了Java的单继承特性。

方法的重写与重载

什么是方法

方法是类中的一个功能块,它被定义来执行特定的任务。在Java中,方法通常由访问修饰符、返回类型、方法名和参数列表组成。

Java的修饰符

Java提供了多种修饰符来控制类及其成员的可见性和行为,如public、protected、private、default(包级私有)。这些修饰符决定了类成员的访问范围。

public

描述

public修饰符可以应用于类、方法和成员变量。使用public修饰的类或成员可以被所有其他类访问,不论它们位于同一个包中还是不同的包中。

可见性

在所有类中都可以访问。

protected

描述

protected修饰符适用于方法和成员变量。使用protected修饰的成员只能在同一个包内的类和其他包中的子类中访问。

可见性

在同一个包内的所有类和其他包中的子类中可以访问。

default(无修饰符)

描述

当没有指定任何访问修饰符时,默认使用包级别访问权限,称为default访问。default修饰符适用于类、方法和成员变量。使用default修饰的类或成员只能在同一个包内访问。

可见性

只能在同一个包内的所有类中访问。

private

描述

private修饰符用于成员变量和方法。使用private修饰的成员只能在其所在的类中访问。

可见性

只能在同一个类中访问。

方法的重载

方法的重载(Overloading)是指在同一个类中,可以定义多个方法名相同但参数列表不同的方法。这些方法可以有不同的参数数量或参数类型。

例子:
class lianxi {

    int add(int a, int b) {

        return a + b;

    }



    double add(double a, double b) {

        return a + b;

    }

}

在这个例子中,add方法被重载了,一个方法接受两个整数作为参数,另一个接受两个双精度浮点数作为参数。

方法的重写

方法的重写是指子类提供了与父类方法相同名称和参数列表的方法,且返回类型必须兼容。重写是为了在子类中实现父类方法的特定行为。

例子:
class Animal {

    void eat() {

        System.out.println("动物吃饭");

    }

}



class Dog extends Animal {

    @Override

    void eat() {

        System.out.println("小狗吃饭");

    }

}

在这个例子中,Dog类重写了Animal类的eat方法。

为什么要进行重写

重写的主要目的是为了在子类中定制或扩展父类的方法行为。当父类的方法无法满足子类的需求时,可以通过重写该方法来提供适当的实现。例如,在一个动物的例子中,所有动物都有eat方法,但不同动物吃的方式不同,所以需要在每个具体的动物类中重写eat方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值