面向对象 -- 类的组合

组合

将一个类的对象封装到另一个类的对象的属性中(一个类的对象是另一个类的对象的属性),就叫组合 

例如 圆形类的对象是圆环类对象的 outer 属性的值

   计算圆形相关数据的公式只和 Circle 类在一起

   其余的用到公式的地方都是通过 Circle 类来使用的

   公式与其他类之间的关系是一个 '松耦合' 的关系

# 圆形类
from math import pi
class Circle:
    def __init__(self,r):
        self.r = r

    def area(self):
        return 3.14*self.r**2

    def perimeter(self):
        return 2*3.14*self.r

# 圆环类
class Ring:
    def __init__(self,r1,r2):
        if r1>=r2:
            self.outer = r1
            self.inner = r2
        else:
            self.inner = r1
            self.outer = r2

    def area(self):
        return 3.14 * self.outer ** 2 - 3.14 * self.inner ** 2

    def perimeter(self):
        return 2 * 3.14 * self.outer + 2 * 3.14 * self.inner
c = Circle(5)
r = Ring(6,8)

其他示例函数

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

    def date(self):
        return '%s-%s-%s'%(self.year,self.month,self.day)

class Student:
    def __init__(self,name,num,birth,in_shcool,start_day):
        self.name = name
        self.num = num
        self.birth = birth     # 组合
        self.in_school = in_shcool # 组合
        self.start_day = start_day # 组合

d1 = Date(1999,10,27)
d2 = Date(2019,1,9)
d3 = Date(2019,2,9)
feng = Student('冯磊',10086,d1,d2,d3)
print(feng.birth.year)
print(feng.birth.month)
print(feng.birth.day)
print(feng.birth.date())

feng.start_day.month +=1
print(feng.start_day.date())
class Student:
    def __init__(self,name,num,course):
        self.name = name
        self.num = num
        self.course = course

class Course:
    def __init__(self,name,price,period):
        self.name = name
        self.price = price
        self.period = period
python = Course('python',25000,'6 months')
s1 = Student('任世龙',10085,python)
s2 = Student('任希同',10084,python)
s3 = Student('董鹏',10083,python)
# print(s1.__dict__)
python.price = 30000
python.period = '7 months'
print(s1.course.price)

 

转载于:https://www.cnblogs.com/biulo/p/10604322.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java是一种非常流行的面向对象编程语言,它的核心概念之一就是与对象。 是用来描述具有相同属性和行为的一组对象的模板。可以把看作是一种自定义的数据型。在中,我们可以定义各种属性和方法来描述对象的特征和行为。属性是对象的状态,而方法则是对象的行为。 对象是的具体实例化,在内存中占有一定的空间。可以把对象看作是的变量,通过实例化来创建对象。对象可以访问中定义的属性和方法,并且每个对象都有自己独立的状态。 通过和对象的组合使用,我们可以实现面向对象编程的核心思想:封装、继承和多态。 封装是指将数据和操作数据的方法封装在的内部,隐藏内部实现细节,只提供公共的访问方法。这样可以保证数据的安全性和一致性,提高代码的可维护性和重用性。 继承是指通过已有的创建新的,提供新所具有的属性和方法,并且可以重写或扩展父的方法。继承可以减少代码的冗余,提高代码的复用性和可扩展性。 多态是指同一型的对象在调用同一个方法时,可以有不同的行为表现。它通过方法重载和方法重写实现。多态可以提高代码的灵活性和扩展性,让我们能够编写更加通用和可复用的代码。 总之,与对象是Java面向对象编程的基石,它们的灵活组合使用可以让我们编写出高质量、模块化的代码,并且提高了代码的可维护性和可扩展性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值