📜  基类,抽象类 (1)

📅  最后修改于: 2023-12-03 15:23:41.178000             🧑  作者: Mango

基类和抽象类

在面向对象编程中,基类和抽象类是两个重要概念。本文将介绍这两个概念的含义和用法。

基类

一个类可以从另一个类继承属性和方法。被继承的类称为基类,也被称为父类。继承基类的类称为派生类,也被称为子类。基类中的属性和方法可以被派生类继承并使用。

下面是一个简单的例子:

class Animal:
    def __init__(self, name):
        self.name = name
    
    def speak(self):
        print("I am an animal.")
        
class Dog(Animal):
    def speak(self):
        print("I am a dog.")

my_dog = Dog("Fido")
my_dog.speak()

在上面的例子中,Animal是基类,Dog是派生类。Dog继承了Animal中的方法和属性。当我们定义了一个新的speak方法时,它覆盖了基类中的speak方法。

抽象类

抽象类是没有实例化的类,也就是说,不能创建抽象类的实例。抽象类通常是被用来描述一个概念或一种行为。我们可以把抽象类看作是一个框架,它定义了一些必须要实现的方法,但是并没有具体的实现方式。

以下是一个简单的抽象类的例子:

from abc import ABC, abstractmethod

class AbstractClass(ABC):
    @abstractmethod
    def do_something(self):
        pass
    
class ConcreteClass(AbstractClass):
    def do_something(self):
        print("I am doing something.")

my_class = ConcreteClass()
my_class.do_something()

在上面的例子中,AbstractClass是一个抽象类。它定义了一个do_something方法,但是并没有具体的实现方式。ConcreteClass是一个派生类,它继承了抽象类中的do_something方法,并提供了具体的实现方式。

总结

基类是一种继承和复用代码的方式,在派生类中可以重写或添加基类中的方法和属性。抽象类则是一种定义框架和规范的方式,它定义了一些必须要实现的方法,但是并没有具体的实现方式。基类和抽象类都是面向对象编程中非常有用的概念。