雨敲窗python_雨敲窗Python:类

本文深入介绍了面向对象编程的基本概念,包括类、实例、类属性、实例属性、类方法、访问控制、继承和多态。通过具体的例子展示了如何定义类,如何设置属性和方法,以及如何使用继承来实现代码复用和扩展。同时强调了访问控制的重要性,以及如何通过接口来增强代码的健壮性。
摘要由CSDN通过智能技术生成

http://www.yuqiaochuang.com

简介

面向对象是我们经常能听到的术语,即class,类。事实上,主角是两个,一个是类,一个是类实例。人类,是一个类,我们每一个人是一个人类的实例。而类之间又有一些关系,例如,我们既是人类,也是动物,更细化来讲,我们是哺乳类动物,灵长类,类似于集合的概念,哺乳动物属于动物,而在面向对象中我们通常称哺乳动物是动物的子类。而对于动物这个类来说,会自带一些属性,例如:年龄、体重。也会有一些方法:生殖、呼吸。而不同种类的动物(即动物类的各种子类)可能会有不同的属性或方法,像胎生、卵生,像鸟类的飞行的方法和豹子奔跑的方法。

定义

用关键字class去定义一个类,如果没有指定父类,默认继承object类。

这样,我们定义个了一个Human,人类。

类属性

为什么要叫类属性呢,因为这个属性是和类绑定的,并不是和实例绑定的。胎生这个属性是全人类共有的,并不是某个人特殊拥有的属性。

实例属性

我们首先实例化了一个人类human_a,然后给这个人类设置了一个实例属性name,name这个属性独立于其他的人类,是和实例绑定的,所以叫实例属性。

– 实例属性可以在实例创建后任意时间设置。

– 一般放在构造函数里init()

类方法

human_a = Human(“alan”) human_a.walk() 运行结果:

alan is walking

类的方法可以看做是一种类属性,而传入的第一个参数self,表示调用这个类方法的实例。像上面的例子,human_a调用了walk这个类方法,human_a的名字是alan,所以运行的结果就是alan is walking。

访问控制

从上面的例子来看,我们可以在外部随意更改name这个属性,如果不想让外部直接访问到,则在属性名字前加两个下划线__name,这样从外部就无法直接访问了。如果还是想访问,可以再加个get的接口。

如果还是想更改__name字段,可以再加上一个set接口

可能有人会有疑问,为何要这么“画蛇添足”呢?其不然,这样会增强代码的健壮性,直接暴露属性可能会带来意想不到的后果,通过接口的方式可以加以控制,例如,我们可以通过set接口去限定name的长度。

这样就不会出现name过长的情况。

继承

最开始的简介里说到,哺乳动物是动物的一种,用面向对象的属于来说,哺乳动物是动物的子类,子类拥有父类的属性、方法,即继承。同时又可以拥有父类没有的属性和方法,即多态。 还是以人类为例,通常来说,人类又可以分为男人和女人(当然也有别的,23333)

来,我们看下这个男人,多了一个新的属性,__has_wife(是否已婚)。我们写到了Man的构造函数里。其实通常并不这么写构造函数,假如Human里有很多属性、很多初始化步骤,我们Man继承的时候难不成要复制粘贴一遍Human的构造函数?当然不是啦,通常会这么写。

super(Man, self).__init__(name)等价于调用了父类Human的构造函数,就不用再复制粘贴一遍了。 既然有男人,那就再来个女人吧。

我们都道,男人和女人是不一样的,通常男人都自带抽烟、喝酒、烫头,啊。。。并没有烫头。

当然,女人也自带逛街、化妆等天赋技能。

好了,观众朋友们,有没有感觉到这种继承的优越性。可以很清晰地看到,男人和女人都有一些相同的属性,也有一些各自不同的方法。如果哪天人类有了别的方法、属性,直接在Human类更改,男人和女人也会自动继承。如果想再设计一个双性人这个类,那直接从Human继承就可以了,对男人和女人不会有任何影响。这就是面向对象的优越性啊!

本项目是一个基于SSM(Spring+SpringMVC+MyBatis)框架和Vue.js前端技术的大学生第二课堂系统,旨在为大学生提供一个便捷、高效的学习和实践平台。项目包含了完整的数据库设计、后端Java代码实现以及前端Vue.js页面展示,适合计算机相关专业的毕设学生和需要进行项目实战练习的Java学习者。 在功能方面,系统主要实现了以下几个模块:用户管理、课程管理、活动管理、成绩管理和通知公告。用户管理模块支持学生和教师的注册、登录及权限管理;课程管理模块允许教师上传课程资料、设置课程时间,并由学生进行选课;活动管理模块提供了活动发布、报名和签到功能,鼓励学生参与课外实践活动;成绩管理模块则用于记录和查询学生的课程成绩和活动参与情况;通知公告模块则实时发布学校或班级的最新通知和公告。 技术实现上,后端采用SSM框架进行开发,Spring负责业务逻辑层,SpringMVC处理Web请求,MyBatis进行数据库操作,确保了系统的稳定性和扩展性。前端则使用Vue.js框架,结合Axios进行数据请求,实现了前后端分离,提升了用户体验和开发效率。 该项目不仅提供了完整的源代码和相关文档,还包括了详细的数据库设计文档和项目部署指南,为学习和实践提供了便利。对于基础较好的学习者,可以根据自己的需求在此基础上进行功能扩展和优化,进一步提升自己的技术水平和项目实战能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值