zoukankan      html  css  js  c++  java
  • 对象的继承,super(),子类与父类的参数

    #object: 看看对象的继承
    #writer: mike
    #time: 2020,11,18
    
    
    #创建一个父类,即便你不写object,它也会默认有object 
    class Student(object):
        #定义属性
        def __init__(self,name,time,hour = 0,timeEffective=0):
            self.name = name
            self.time = time
            self.timeEffective = timeEffective
            self.hour = hour
        #定义方法
        def countTime(self,hour,rate):
            self.hour = self.hour + hour
            self.totalEffective = self.hour * rate
    
    #创建一个子类
    class Programmer(Student):
        #这个参数是,这个子类独有的参数
        def __init__(self,name):
            #调用父类的方法为我所用,其实子类的属性通过父类的函数定义了,父类的默认参数,我在后面省略了。
            #一定要注意,子类的参数必须满足父类的所有参数,除非,父类的参数有默认参数,即便有的父类的参数子类用不到也必须满足。
            #也就是说,子类把父类的属性,不管有没有用,全都拿了过来
            #再用父类的函数时,就不用加上self了
            super().__init__(name,time=3)
    
        #可以看出下面这两个参数我并没有初始化,但是它返回的结果是我初始化过得属性
        def count(self,hour,rate):
            super().countTime(hour,rate)
    
    
    if __name__ == '__main__':
    #    one = Student("liming",3)
        two = Programmer("zhangxuan")
        #证明了调用父类方法为我所用。
        print("timeEffective is ",two.timeEffective)
        two.count(10,0.5)
        #原来可以通过方法生成新的属性
        print("two result is ",two.totalEffective)

    结果为: 

    timeEffective is 0
    two result is 5.0

    其实,在创建子类的过程中,子类的数据也就是属性在内存中是有分配的,但是子类的方法,如果与父类相同,则会调用父类的方法,不会分配新内存。

  • 相关阅读:
    装黑苹果遇到的术语
    关于Android方法数量限制的问题
    使用LeakCanary遇到的问题 就是不弹出来
    Android内存泄露自动检测神器LeakCanary
    Android开发常见的Activity中内存泄漏及解决办法
    LeakCanary 中文使用说明
    LeakCanary: 让内存泄露无所遁形
    LeakCanary——直白的展现Android中的内存泄露
    【腾讯Bugly干货分享】Android内存优化总结&实践
    Java基础--定时任务Timer
  • 原文地址:https://www.cnblogs.com/zijidefengge/p/13998955.html
Copyright © 2011-2022 走看看