zoukankan      html  css  js  c++  java
  • 面向对象的继承

    子类能继承父类的属性和方法,若子类没有,则去父类中调用

     1 class People:
     2     def __init__(self,name,age,general):
     3         self.name=name
     4         self.age=age
     5         self.general=general
     6 
     7     def zhuanqian(self,money):
     8         print('努力工作赚钱%s'%money)
     9 class Student(People):
    10     '学生类继承于人类'
    11     pass
    12 
    13 # print(People.__dict__)
    14 # print(Student.__dict__)
    15 s1=Student('xiaolong',21,'man')
    16 print(s1.general)
    17 s1.zhuanqian(999)

     通常更常用一些的方法是接口继承,它在父类中定义好子类继承必须具备的函数,但不会提供函数的具体实现,由子类继承后来具体实现,Python可以有多个父类继承,但Java或者C#只能有一个。

     1 import abc
     2 class About(metaclass=abc.ABCMeta):
     3     @abc.abstractmethod 
     4     def read(self):
     5         pass
     6 
     7     @abc.abstractmethod
     8     def write(self):
     9         pass
    10 
    11 class Disk(About):
    12     def read(self):
    13         print('disk read')
    14     def write(self):
    15         print('disk write')
    16 
    17 class Cd(About):
    18     def read(self):
    19         print('cd read')
    20     def write(self):
    21         print('cd write')
    22 
    23 
    24 d1=Disk()
    25 d1.read()
    26 d1.write()

     对父类的字段属性进行调用,同时衍生出子类特有的字段属性,可以直接在子类初始化字段属性时,直接父类调用初始化属性(子类self的init方法一定得包含父类的属性)

     1 class Vehicle:
     2     '这是一个交通工具类'
     3     def __init__(self,name,speed,price,many):
     4         self.name=name
     5         self.speed=speed
     6         self.price=price
     7         self.many=many
     8 
     9     def run(self):
    10        print('****************%s准备发车了,速度是%s' % (self.name, self.speed))
    11 
    12 class Bus(Vehicle):
    13     '这是一个公汽 子类'
    14     def __init__(self,name,speed,price,many,num,addres):
    15         # Vehicle.__init__(self,name,speed,price,many)
    super().__init__(name,speed,price,many)
    16 self.num=num 17 self.addres=addres 18 19 def run(self): 20 print('%s第%s线启动了,请%s的旅客做好准备!'%(self.name,self.num,self.addres)) 21 # Vehicle.run(self) 22 super().run() 换成super后可自动匹配父类 并且无需再传入self 灵活度高 23 24 b1=Bus('复兴号','200km/h',125,2000,'007号','南京') 25 b1.run()

     子类在调用函数的时候优先调用自己的方法,然后再调用父类的函数方法

    用super方法后,以后父类若变更类名,依旧可以正常使用

     

  • 相关阅读:
    jQuery Colorpicker Spectrum api 中文 文档 属性 事件 方法
    java使用dbutils工具类实现小程序 管家婆记账软件
    java实现服务端开启多线程处理客户端的上传图片请求
    java 基于tcp客户端服务端发送接收数据
    java基于udp实现键盘录入聊天
    java实现udp发送端和接收端
    java通过读取本地文件获取反射方法参数,执行对象方法
    java通过反射获取私有的构造方法,及反射擦除泛型数据类型约束
    Java反射获取类对象的三种方式
    java使用DBCP连接池创建工具类
  • 原文地址:https://www.cnblogs.com/wen-kang/p/9236891.html
Copyright © 2011-2022 走看看