zoukankan      html  css  js  c++  java
  • 组合

    在一个类中以另外一个类的对象作为数据属性,称为类的组合。

    组合和继承都是有效利用已有类的资源的重要方式。区别:

    继承:通过继承建立了派生类和基类之间的关系,是一种“是”的关系。当类之间有很多相同的功能,提取这些共同的功能做成基类,用继承比较好。例如:学生是人,老师是人。

    组合:用组合的方式建立了类与组合之间的关系,是一种“有”的关系。例如:人有生日,老师有课程

    当类之间有显著不同,并且较小的类是较大的类所需要的组件时,用组合比较好。

    class People:
        school = "university"
    
        def __init__(self,name,age,sex):
            self.name = name
            self.age = age
            self.sex = sex
    
    class Teacher(People):       # 继承
        def __init__(self,name,age,sex,level,salary):
            super(Teacher, self).__init__(name,age,sex)
            self.level = level
            self.salary = salary
    
        def teach(self):
            print("%s is teaching"%self.name)
    
    
    class Student(People):
        def __init__(self, name, age, sex, class_time):
            super(Student, self).__init__(name,age,sex)
            self.class_time = class_time
    
        def learn(self):
            print("%s is learning" % self.name)
    
    class Course:
        def __init__(self,name,price,period):
            self.course_name = name
            self.course_price = price
            self.course_period = period
    
        def tell_info(self):
            print("课程名:%s,课程价钱:%s,课程周期:%s"%(self.course_name,self.course_price,self.course_period))
    
    class Date():
        def __init__(self,year,mon,day):
            self.year = year
            self.mon = mon
            self.day = day
    
        def tell_info(self):
            print("%s-%s-%s"%(self.year,self.mon,self.day))
    
    
    # teacher1  = Teacher("alex",20,"male",10,3000)
    # python = Course("python",3000,"3months")
    # linux = Course("linux",2000,"4months")
    #
    # teacher1.course = python    # 让老师有了一个属性,指向课程
    
    # print(teacher1.course.course_name)
    # teacher1.course.tell_info()
    #
    # student = Student("张三",28,"female","8:00")
    # student.course1 = python
    # student.course2 = linux
    # student.course1.tell_info()
    # student.course2.tell_info()
    # student.courses=[]
    # student.courses.append(python)
    # student.courses.append(linux)
    # for i in student.courses:
    #     print(i.__dict__)
    
    student = Student("张三",28,"female","8:00")
    d = Date(1988,4,20)
    student.birth = d    # 组合
    student.birth.tell_info()
    

      

      

  • 相关阅读:
    JNI--java调用C&C++
    不能在utf8和UCS2之间转换:failUTF8Conv
    java生成随机数
    itext操作pdf文件
    Adobe Acrobat的安装时出现:服务print spooler启动失败,请确认您有足够权限启动系统服务
    lob类型数据处理 java.lang.IllegalStateException: No LobHandler found for configuration
    No Dialect mapping for JDBC type–4 hibernate查询MySQL中longBlob数据
    JAVA中的继承初始化
    Log4j简单使用
    深入浅出hibernate 学习
  • 原文地址:https://www.cnblogs.com/fantsaymwq/p/9912363.html
Copyright © 2011-2022 走看看