面向对象1 继承与接口

类的相关知识

定义教师类:

class Teacher:

school = ‘偶的博爱‘

# (egon_obj,‘egon‘,18)

def __init__(self, name, age):

self.name = name

# egon_obj.name=‘egon‘ #egon_obj.__dict__[‘name‘]=‘egon‘

self.age = age

# egon_obj.age=18

#teach(egon_obj)

def teach(self):

print(‘%s is teaching‘ %self.name)

def foo(self):

print(‘================================‘)

可以用类实例化出对象

egon_obj = Teacher(‘egon‘, 18)  # __init__(egon_obj,‘egon‘,18)

alex_obj = Teacher(‘alex‘, 84)  # __init__(alex_obj,‘alex‘,18)

类的属性引用:数据属性+函数属性

print(Teacher.school)

print(Teacher.teach) #函数属性

Teacher.teach() #必须传值

对象的属性引用

print(egon_obj.name,egon_obj.age)

类与对象的名称空间

print(Teacher.__dict__)

继承

class People:

pass

class Animal:

pass

class Student(People,Animal): #people称为基类或父类

pass

print(Student.__bases__)

print(People.__bases__)

print(Animal.__bases__)

在python3中,所有类默认继承object,

但凡是继承了object类的子类,以及该子类的子类,都称为新式类(在python3中所有的类都是新式类)

没有继承object类的子类成为经典类(在python2中,没有继承object的类,以及它的子类,都是经典类)

解决代码的重用的问题,减少代码冗余

继承是一种什么‘是’什么的关系

class People:

def __init__(self, name, age):

# print(‘People.__init__‘)

self.name = name

self.age = age

def walk(self):

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

class Teacher(People):

pass

class Student(People):

pass

t=Teacher(‘egon‘,18)

print(t.name,t.age)

print(t.__dict__)

t.walk()

s=Student(‘alex‘,13)

print(s.name,s.age)

s.walk()

继承是用来创建新的类得得一种方式,好处是可以减少重复代码

继承是类与类之间的关系。是一种什么是什么的关系

组合: 是一种什么有什么的关系,也是为了减少重复代码

class People:

def __init__(self, name, age, year, mon, day):

self.name = name

self.age = age

self.birth = Date(year, mon, day)

def walk(self):

print(‘%s is walking‘ % 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, year, mon, day,level,salary):

People.__init__(self,name,age,year,mon,day)

self.level=level

self.salary=salary

def teach(self):

print(‘%s is teaching‘ %self.name)

class Student(People):

def __init__(self, name, age, year, mon, day,group):

People.__init__(self,name,age,year,mon,day)

self.group=group

def study(self):

print(‘%s is studying‘ %self.name)

# t=Teacher(‘egon‘,18,1990,2,33)

# print(t.name,t.age)

# print(t.birth)

# t.birth.tell_birth()

# print(t.birth.year)

# print(t.birth.mon)

# print(t.birth.day)

接口

python中没有接口函数需要用定义类来模拟

class File:#定义接口Interface类来模仿接口的概念,

def read(self): #定接口函数read

pass

def write(self): #定义接口函数write

pass

class Txt(File): #文本,具体实现read和write

def du(self):

print(‘文本数据的读取方法‘)

def xie(self):

print(‘文本数据的读取方法‘)

class Sata(File): #磁盘,具体实现read和write

def read(self):

print(‘硬盘数据的读取方法‘)

def write(self):

print(‘硬盘数据的读取方法‘)

class Process(File):

def read(self):

print(‘进程数据的读取方法‘)

def write(self):

print(‘进程数据的读取方法‘)

父类要限制

1:子类必须要有父类的方法

2:子类实现的方法必须跟父类的方法的名字一样

import abc

class File(metaclass=abc.ABCMeta):

@abc.abstractmethod

def read(self):

pass

@abc.abstractmethod

def write(self):

pass

class Txt(File): #文本,具体实现read和write

def read(self):

pass

def write(self):

pass

t=Txt()

时间: 2024-10-29 00:39:29

面向对象1 继承与接口的相关文章

php面向对象 封装继承多态 接口、重载、抽象类、最终类总结

1.面向对象 封装继承多态  接口.重载.抽象类.最终类 面向对象 封装继承多态  首先,在解释面向对象之前先解释下什么是面向对象? [面向对象]1.什么是类? 具有相同属性(特征)和方法(行为)的一系列个体的集合,类是一个抽象的概念2.什么是对象?从类中拿到的具有具体属性值得个体,称为对象,对象是一个具体的个体 所以,面向对象即我们专注对象来处理问题,通过从一个个具有属性和功能的类中拿到对象来处理问题. 下面我们再来细说下面向对象的三大特征:继承/封装/多态 一.继承 在PHP中我们主要通关E

面向对象,继承和接口的使用理解

面向对象: 将你要将各种小类组合成一个大类的时候,面向对象的思想只需要在大类中添加一个小类的实例.这样可以提升代码的重用率. 继承: 当需要对父类进行扩张来得到一个拥有一些额外方法或者属性的时候使用.当父类的一些东西需要重写时使用也相当重要.抽象类:抽象类.中的抽象方法必须被实现,而可以有非abstract的方法和数据.这就区别于接口使得它更加灵活.在某些特定方法只会在这个类的子类中需要使用的时候,就没有必要特地为这个方法书写一个接口.抽象类用于抽象一个实际物品的时候特别有效. 接口: 因为接口

面向对象特性—继承与接口(三十)

import abc class AllFile(metaclass=abc.ABCMeta): @abc.abstractmethod def read(self): pass # 父类定义抽象的方法,子类必须实现 @abc.abstractmethod def write(self): pass class Txt(AllFile): def read(self): print("txt read") def write(self): print("txt write&q

Javascript面向对象特性实现封装、继承、接口详细案例——进级高手篇

Javascript面向对象特性实现(封装.继承.接口) Javascript作为弱类型语言,和Java.php等服务端脚本语言相比,拥有极强的灵活性.对于小型的web需求,在编写javascript时,可以选择面向过程的方式编程,显得高效:但在实际工作中,遇到的项目需求和框架较大的情况下,选择面向对象的方式编程显得尤其重要,Javascript原生语法中没有提供表述面向对象语言特性的关键字和语法(如extends.implement).为了实现这些面向对象的特性,需要额外编写一些代码,如下.

12.面向对象(继承/super/接口/抽象类)

面向对象继承与派生继承继承顺序继承原理子类调用父类的方法(super)组合接口接口的概念:接口的概念解释和使用:python中的接口:抽象类 面向对象 继承与派生 继承 什么是继承?继承是一种创建新的类的方式 class A: pass class B(A): pass 在python中,新建的类可以继承自一个或者多个父类,原始类称为基类或者超类,新建的类称为派生类或者子类 python中类的继承分为,单继承和多继承. 查看继承的方法B.__bases__ 如果没有指定基类,python的类会默

面向对象二 — — 继承、抽象类、接口

一.继承 extends 继承的特点:Java的继承通过extends关键字来实现,实现继承的类被称为子类,被继承的类称为父类 1.参数列表必须完全与被重写的方法相同,否则不能称其为重写而是重载. 2.返回的类型必须一直与被重写的方法的返回类型相同,否则不能称其为重写而是重载. 3.访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>default>private) 4.重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常. 用supe

面向对象(二)——继承、派生、组合以及接口

一.继承与派生 1.1 什么是继承 继承是一种创建新类的方式,在Python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类 Python中类的继承分为:单继承和多继承 class People: # 定义父类 def __init__(self,name,age): self.name=name self.age=age def walk(self): print('%s is walking' %self) class Teacher(People): #

关于Java中继承和接口的理解

关于Java中继承和接口的理解 Java语言中,为了实现代码重用,设计了继承这一机制,但是,其设计成单继承,这样设计是有原因的,如下图: Figure1:deadly diamond of death 此图问题称为菱形问题(diamond problem),就是说,当A的子类B和C同时实现了A中的方法,则同时继承了B和C的子类D在调用该方法时会出现混乱,无法得知该调用哪一个方法. 既然不能实现多继承,我们就会考虑把很多方法就写在父类里,或者继承抽象类,实现其方法,但是,这样会导致一个问题,比如说

(原创)面向对象的系统对接接口编写。第4篇

接上一篇:http://www.cnblogs.com/mazhiyuan/p/5224050.html 这篇开始写Post和Get请求的布局. 我们就以新闻模块来举例吧.其它的模块,比如用户啦,比如音频模块啦,依样画葫芦,都一样的. 先创建一个新闻模块的文件夹.我们叫“News" 然后,如上图1,2,3共三个红圈.创建这3个文件. 我们先讲第2件文件:CommandType.cs CommandType.cs文件,如上图.他就是一个枚举.里面定义了各种业务逻辑.比如里面有”添加新闻动态“.在这