类关系:继承和组合

1、继承

2、组合

3、继承和组合

在jichengandzuhe.py中

class People:
    def __init__(self, name, age, sex, year, mon, day):
        self.name = name
        self.age = age
        self.sex = sex
        self.birth = Date(year, mon, day)

    def walking(self):
        print(‘%s is walking ‘ % self.name)

    def talking(self):
        print(‘%s is talking ‘ % self.name)

class Date:
    def __init__(self, year, mon, day):
        self.year = year
        self.mon = mon
        self.day = day

    def tell_birth(self):
        print(‘出生于<%s>年 <%s>月 <%s>日‘ % (self.year, self.mon, self.day))

class Teacher(People):
    def __init__(self, name, age, sex, level, salary, year, mon, day):
        # People.__init__(self, name, age, sex, year, mon, day)
        super(Teacher,self).__init__(name, age, sex, year, mon, day)
        self.level = level
        self.salary = salary

    def teaching(self):
        People.talking(self)
        print(‘%s is teaching‘ % self.name)

class Student(People):
    def __init__(self, name, age, sex, year, mon, day, group):
        People.__init__(self, name, age, sex, year, mon, day)
        self.group = group

    def studying(self):
        People.talking(self)
        print(‘%s is studying‘ % self.name)

t1 = Teacher(‘egon‘, 18, "男", "初级", 3000, 1990, 9, 10)
print(t1.name, t1.age)
t1.walking()
t1.talking()
s1 = Student(‘xiaobai‘, 22, "女", 2008, 1, 20, "一组")
print(s1.name, s1.age)
s1.talking()
s1.walking()

  

类关系图:

birth是People类的一个实例属性,

birth的值为Date类的一个实例化对象,

故,Date类是People类的组成部分,属于组合关系。

延伸:类图生成工具:https://www.cnblogs.com/andy9468/p/8353613.html

原文地址:https://www.cnblogs.com/andy9468/p/9687986.html

时间: 2024-07-31 18:00:58

类关系:继承和组合的相关文章

python3 面向对象、类、继承、组合、派生、接口、子类重用父类方法

对象是特征(变量)与技能(函数)的结合体而类是一系列对象共同的特征与技能的集合体 class teacher: lesson = "python" def __init__(self,name,color,age): # 只干初始化的活 self.name = name if not isinstance(name,str): raise TypeError self.color = color self.age = age def jineng(self): print('新技能')

类的继承和组合

类的继承 public class Fruit{ public double weight; public void info(){ System.out.println("水果"+weight); } } public class Apple extends Fruit{ public static void main(String[] args){ //创建Apple对象 Apple apple=new Apple(); //Apple对象本身没有weight成员变量 //因为Ap

C++类的继承与组合区别

C++的“继承”特性可以提高程序的可复用性.正因为“继承”太有用.太容易用,才要防止乱用“继承”.我们要给“继承”立一些使用规则: 一.如果类A 和类B 毫不相关,不可以为了使B 的功能更多些而让B 继承A 的功能. 不要觉得“不吃白不吃”,让一个好端端的健壮青年无缘无故地吃人参补身体. 二.如果类B 有必要使用A 的功能,则要分两种情况考虑: (1)若在逻辑上B 是A 的“一种”(a kind of ),则允许B 继承A 的功能.如男人(Man)是人(Human)的一种,男孩(Boy)是男人的

类的继承与组合

对象(Object)是类(Class)的一个实例(Instance).如果将对象比作房子,那么 类就是房子的设计图纸.所以面向对象设计的重点是类的设计,而不是对象的设计. 对于 C++程序而言,设计孤立的类是比较容易的,难的是正确设计基类及其派生类. 本章仅仅论述"继承"(Inheritance)和"组合"(Composition)的概念. 注意,当前面向对象技术的应用热点是 COM 和 CORBA,这些内容超出了 C++教材 的范畴,请阅读 COM 和 CORBA

Inheritance, Association, Aggregation, and Composition 类的继承,关联,聚合和组合的区别

在C++中,类与类之间的关系大概有四种,分别为继承,关联,聚合,和组合.其中继承我们大家应该都比较熟悉,因为是C++的三大特性继承Inheritance,封装Encapsulation,和多态Polymorphism之一. 继承Inheritance:是指一个类(子类)来继承另一个类(基类),并增加自己的功能,可以通过重写基类中的函数来实现.可以将继承理解成“IS A”的关系,比如A cat "IS A" animal, or A car "IS A" vehicl

Python基础(16)_面向对象程序设计(类、继承、派生、组合、接口)

一.面向过程程序设计与面向对象程序设计 面向过程的程序设计:核心是过程,过程就解决问题的步骤,基于该思想设计程序就像是在设计一条流水线,是一种机械式的思维方式 优点:复杂的问题的简单化,流程化 缺点:扩展性差 面向对象的程序设计:核心是对象,对象是特征(变量)与技能(函数)的结合体,是一种上帝式的思维方式 优点:解决了程序的扩展性 缺点:可控性差 二.类和对象 以游戏举例,基于面向对象设计一个款游戏:英雄联盟,每个玩家选一个英雄,每个英雄都有自己的特征和和技能,特征即数据属性,技能即方法属性,特

python类与对象的组合与继承

1.把类的对象实例化放到一个新的类里面叫做类的组合,组合就是指几个横向关系的类放在一起,纵向关系的类放在一起是继承,根据实际应用场景确定.简单的说,组合用于"有一个"的场景中,继承用于"是一个"的场景中.例如,水池里有一个乌龟,天上有一个鸟,地上有一个小甲鱼,这些适合使用组合.青瓜是瓜,女人是人,鲨鱼是鱼,这些就应该使用继承啦实例如下: class Turtle: def __init__(self,x): self.num = x class Fish: def

9. 实现类复用的两个手段——继承与组合

一.实现类复用概述 1. 如果需要复用一个类,可以把这个类当成基类来继承 如果访问权限允许,子类可以直接访问父类的成员变量和方法,相当于子类可以直接复用父类的成员变量和方法 继承带来高度复用的同时,也严重地破坏了父类的封装性 如果只是出于类复用的目的,并不一定需要使用继承,完全可以使用组合来实现 2. 如果需要复用一个类,还可以把这个类当成新类的组合成分 新类可以直接复用这个类的public成员变量和方法 二.实现类复用的补充说明 1. 继承方式中,子类可以直接获得父类的public方法,程序使

类的继承、派生、组合、菱形的继承、多态

类的继承 继承是一种新建的类的方式,新建的类成为子类,被继承的类称为父亲 继承的特性是:子类会遗传父亲的属性 继承是类与类之间的关系 使用继承目的,可以减少代码的咒余 在python中,父类和子类只有在继承的时候才会产生 继承是为了拿到父类的所有东西 class Parent_Foo: def __init__(self,first_name,money,car,house) self.first_name = first_name self.car = car self.house =hous