zoukankan      html  css  js  c++  java
  • 类的小笔记 书330页13.1关于类,子类,继承的例子,加上了一些注释

    关于类的小笔记

    #-*- encoding: utf-8 -*-
    # 这是本书330页13.1关于类,子类,继承的例子,加上了一些注释
    
    # ---- (1)定义类(和方法)
    
    class AddrBookEntry(object):    # 定义了类AddrBookEntry,类名通常用大写字母开头
    # |           |          |
    # 关键字       |         参数,如果没有父类(基类),这里的(object)可以省略
    #             类名
        'address book entry class 地址簿录入类'    # 函数或者类的文档字串
        
        def __init__(self, nm, ph): # 定义构造器,__init__()是一个特殊的方法
    #    |            |
    #    关键字         self参数,所有方法声明中都存在
    #    这里定义一个方法__init__(),也就是给类添加功能
            
            self.name = nm          # 设置name,nm是该类的属性
            self.phone = ph         # 设置phone,ph是该类的属性
            print 'Created instance for:', self.name
            
        def updatePhone(self, newph):   # 定义方法updatePhone()
    #    |               |
    #    关键字           self参数,所有方法声明中都存在
            self.phone = newph
            print 'Updated phone # for: ', self.name
    
    # ----------- 以上是定义类和方法,以下是创建实例,也叫实例化 ---------------
    # ---- (2)创建一个实例
    
    john = AddrBookEntry('John Doe', '408-555-1212')    # 为John Doe创建实例
    jane = AddrBookEntry('Jane Doe', '408-555-1212')    # 为Jane Doe创建实例
    print "John's phone #   ", john.phone
    
    # ---- (3)用这个实例调用方法
    
    john.updatePhone('415-555-1212')
    print "John's new phone #:  ", john.phone # 如果单单是john.phone,就要访问实例的属性
    
    # ----------- 以下是通过继承来创建一个子类(被派生出来),子类将保持父类(基类)的所有特性(属性) ----------
    
    # ---- (a)定义子类(和方法)
    
    class EmpAddrBookEntry(AddrBookEntry):
    #                        |
    #                      子类声明中参数使用父类(基类)名,不再是object
    
        'Employee Address Book Entry class 员工地址类' # 函数或者类的文档字串
    
        def __init__(self, nm, ph, id, em): # 定义构造器,__init__()是一个特殊的方法
    #    |            |
    #    关键字        self参数,所有方法声明中都存在
    #    这里定义一个方法__init__(),也就是给子类添加功能
    
            AddrBookEntry.__init__(self, nm, ph)    #父类(基类)的构造器必须写出
            self.empid = id
            self.email = em
            
        def updateEmail(self, newem):    # 定义方法updateEmail()
            self.email = newem
            print 'Updated E-mail address for:', self.name
                     
    # ---- (b)创建一个子类实例
    
    john = EmpAddrBookEntry('John Doe', '408-555-1212', 42, 'john@spam.doe')    # 为John Doe创建实例
    print john.empid, john.name, ': ', john.phone, john.email
    
    # ---- (c)用这个子类实例调用子类方法
    john.updateEmail('john@doe.spam')
    print john.empid, john.name, ': ', john.phone, john.email
    
    # ---- (d)用这个子类实例调用基类(父类)方法
    john.updatePhone('555-999-1243')
    print john.empid, john.name, ': ', john.phone, john.email

    运行结果

    Created instance for: John Doe
    Created instance for: Jane Doe
    John's phone # 408-555-1212
    Updated phone # for: John Doe
    John's new phone #: 415-555-1212
    Created instance for: John Doe
    42 John Doe : 408-555-1212 john@spam.doe
    Updated E-mail address for: John Doe
    42 John Doe : 408-555-1212 john@doe.spam
    Updated phone # for: John Doe
    42 John Doe : 555-999-1243 john@doe.spam

  • 相关阅读:
    Leetcode第一题:两数之和 (java & python)
    SpringMVC框架的注解如何使用?
    Mybatis框架的代码自动生成工具如何使用呢?
    Mybatis框架如何使用分页插件呢?
    SpringMVC框架如何实现请求转发和重定向呢?
    文件上传的方式有哪些
    Session的销毁方式到底有哪些?
    找工作就像找对象,愿程序员不再孤单
    java是最值得学习的编程语言吗?
    话说当年学习Java所踩过的坑。。。初学者必看
  • 原文地址:https://www.cnblogs.com/balian/p/2643375.html
Copyright © 2011-2022 走看看