还剩28页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
继承与派生类面向对象编程中的重要概念之一OOP继承允许新类从现有类中继承属性和方法,而派生类则是在现有类(基类)的基础上创建的新类什么是类继承创建新类利用已有类的特性,创建新类代码复用减少重复代码,提高代码效率构建复杂系统将复杂系统分解为多个层次,易于维护和扩展继承的作用代码重用可维护性代码组织面向对象编程继承允许开发者重用现有代码继承简化代码结构,方便修改继承提供了一种组织代码的方继承是面向对象编程的核心概,减少重复编写,提高效率和扩展,降低维护成本式,通过层次结构展现代码的念之一,支持代码复用、多态逻辑关系等特性继承的优势代码复用代码维护继承能够重复使用现有代码,减少代码冗余,提高开发效率当需要修改类时,只需要修改基类,派生类会自动继承修改后的代码,简化了代码维护工作继承的基本语法定义派生类使用关键字来定义派生类,并使用冒号后面紧跟基类名称class:访问基类成员在派生类中使用基类成员,可以像访问自身成员一样直接使用构造函数派生类构造函数需要调用基类构造函数初始化基类部分成员访问控制使用访问修饰符(、、)控制派生类对基类成员的访问权限public protectedprivate继承的类型单一继承多层继承多重继承123一个子类只从一个父类继承多个类形成一个继承链一个子类可以从多个父类继承单一继承基本概念语法示例单一继承是面向对象编程的一种通过使用子类名父类名`class:`基本概念,允许一个类继承另一语法,子类可以继承父类的所有个类的属性和方法成员,并拥有自己的独特属性和方法示例场景例如,您可以创建一个名为的子类,继承自父类,并添`Dog``Animal`加特定于狗的属性和方法,例如品种、吠叫等多层继承概念特点多层继承是指从一个基类派生出一个派生类,再从这个派生类派多层继承可以实现更复杂的类层次结构,通过层层继承,可以让生出另一个派生类,以此类推多个类之间形成一个继承链,每类之间共享更多代码和功能个类都继承了它父类的属性和方法多重继承继承多个基类钻石问题
1.
2.12一个派生类可以同时继承自多多重继承可能导致钻石问题,个基类,获得多个基类的属性即一个类同时继承自多个基类和方法,而这些基类又继承自同一个祖先类语言支持谨慎使用
3.
4.34并非所有编程语言都支持多重由于多重继承的复杂性,建议继承,例如和不支持谨慎使用,避免代码的混乱和Java C#多重继承,而支持多重继难以维护C++承派生类与基类派生类基类派生类继承了基类的属性和方法基类是提供属性和方法的类,可,可以添加新特性以被派生类继承继承关系代码示例派生类与基类形成关系,使用关键字表示继承“is-a”“extends”例如猫是动物关系,例如“”“class CatextendsAnimal”父类与子类继承关系类间关系子类继承父类的属性和方法子类是父类的特例,父类是子类的泛化代码复用实际例子子类可以使用父类的代码,减少重复代码汽车是交通工具的特例,交通工具是汽车的泛化基类的访问权限Public PrivateProtected所有类都可以访问基类中的公共成员仅基类本身可以访问其私有成员基类和派生类可以访问受保护成员,其他类无法访问、和Public PrivateProtectedPublic Private公共访问权限,所有类都可以访私有访问权限,只有该类本身可问以访问Protected保护访问权限,只有该类本身和其子类可以访问构造函数与继承初始化1创建对象时自动调用基类2首先执行基类构造函数派生类3然后执行派生类构造函数在继承关系中,构造函数负责初始化对象派生类对象创建时,首先会调用基类构造函数进行初始化,然后才会调用派生类构造函数构造函数执行顺序继承关系中,派生类对象创建时,构造函数的执行顺序非常重要,涉及到基类和派生类的初始化过程了解构造函数执行顺序,有助于我们正确理解继承机制,避免出现初始化错误派生类构造函数1最后执行基类构造函数2从基类开始执行成员变量初始化3重写基类方法重写方法方法重写方法重写派生类可以重写基类方法,提供更具体的实使用关键字标记重写方法,确保重写方法应具有相同的名称、参数列表和返override现代码清晰回值类型重载基类方法方法重载在派生类中,可以定义与基类方法同名但参数列表不同的方法访问权限重载方法的访问权限必须与基类方法相同或更宽松代码示例基类方法•void displayintx;派生类重载方法•void displayintx,int y;调用基类方法使用关键字调用基类方法`base`12在派生类中,可以使用关键字访问基类的成员可以通过方法名语法调用基类的方法,即使派生`base``base.`类中重写了该方法访问基类属性避免冲突34类似地,可以使用属性名访问基类中的属性通过调用基类方法,可以避免派生类方法与基类方法的命名`base.`冲突多态的概念定义优势多态是指同一操作作用于不同的对象,可以产生不同的行为提高代码的可重用性,减少代码冗余,更易于维护和扩展它允许程序使用相同的代码来处理不同类型的对象使程序更加灵活,能够适应不同的对象类型多态的实现方法重写1子类重写父类的方法,实现不同的行为子类方法覆盖父类方法•动态绑定,运行时确定执行方法•接口实现2不同类实现同一个接口,提供相同的功能接口接口定义方法,但不实现•类实现接口,提供具体实现•泛型3使用泛型参数,实现类型无关的代码泛型方法可以接受不同类型参数•编译时进行类型检查,保证代码安全•静态多态和动态多态静态多态动态多态编译时确定方法调用通过函数重载实现编译器根据参数类型运行时确定方法调用通过继承和虚函数实现程序在运行时根选择对应方法据对象类型选择对应方法方法的调用是在编译期间确定的,因此也称为早绑定方法的调用是在运行期间确定的,因此也称为晚绑定抽象类与接口抽象类接口抽象类是一种特殊的类,它不能被实例化,只能作为基类被继承接口是一种完全抽象的类,它只能包含抽象方法和常量定义抽象方法接口不能被实例化••子类必须实现抽象方法类可以通过实现接口来继承接口的方法••抽象类的定义定义特点抽象类是一种特殊的类,不能直抽象类包含抽象方法,需要子类接实例化实现作用语法抽象类提供模板,方便子类继承使用关键字定义抽象abstract类和抽象方法抽象方法与具体方法抽象方法具体方法12抽象方法仅声明,不包含方法体,以分具体方法有方法体,实现具体的操作逻号结尾抽象方法必须在抽象类中定义辑可以在抽象类或具体类中定义区别用途34抽象方法不能直接调用,必须在派生类抽象方法用于定义一个方法的框架,具中重写后才能调用具体方法可以被直体实现由派生类来完成具体方法用于接调用实现具体的业务逻辑抽象类与接口的区别抽象类接口继承方法实现提供基类基础功能,可实现部定义功能规范,不实现功能细抽象类支持多继承,接口不支抽象类可以实现方法,接口只分功能节持多继承能定义方法密封类与密封方法密封类密封方法密封类限制派生防止继承现有类型密封方法防止子类重写保留方法行为总结继承是面向对象编程的核心概派生类通过继承扩展了基类的理解继承和派生类是掌握面向念之一功能对象编程的关键它允许创建新的类,这些类继承了已有派生类可以重写基类的方法、添加新的它们是实现代码复用、代码扩展和多态类的属性和方法,并扩展了其功能成员变量和方法,并利用多态实现代码性的基础,有助于构建更加灵活和可维的灵活性和可扩展性护的软件系统课后思考继承的应用场景多态的实际例子
1.
2.12现实生活中有哪些场景可以应用继承?生活中有哪些多态的例子?抽象类与接口的区别密封类的作用
3.
4.34如何在实际编程中选择抽象类或接口?密封类和密封方法在代码设计中的应用场景?环节QA欢迎提问!您可以就本节课内容提出任何疑问我会尽力为您解答课件结束感谢您的参与!希望本次课件能帮助您更好地理解继承与派生类的概念和应用。
个人认证
优秀文档
获得点赞 0