"类"的讲稿
-----------------------面向对象基础------------------------------------
方法(函数)
{
(c#p10为主,p27;javap96)+资料,讲如下问题:
1、类概念[类、对象]
2、面向对象基本特征(封装、继承、多态)
}
3、类的主要构成(属性和方法)
4、程序中如何实现类:
类格式(类头、成员变量、成员方法,实例化)
例:Person类(姓名,年龄,show_Me)(+set_Me)(+不同文件)
	(Person类内存分配)
	例5-1 学生类(仅java)
	(c#提一下public)
小练习:写一个学生类【属性:学号、姓名、专业、入学成绩;方法:修改专业(入学成绩低于300分不允许修改)】,并在主程序中调用它。
类对象作为方法的形参
例:人摸动物
{
c#代码:
class 动物
{
public string 名字;
public string 叫声;
public void 叫()
{
Console.WriteLine("凶恶的" + 名字 + "在咆哮:" + 叫声 + "~~~~~~~~");
}
}
class 人
{
public void 摸动物(动物 x)
{
x.叫();
}
}
class Program
{
static void Main(string[] args)
{
人 张三=new 人();
动物 狗, 机器猫;
狗 = new 动物();
机器猫 = new 动物();
狗.名字 = "旺财";
狗.叫声 = "汪";
机器猫.名字 = "小叮当";
机器猫.叫声 = "瞄";
张三.摸动物(狗);
张三.摸动物(机器猫);
Console.ReadKey();
}
}
}
当类作为方法的形参和返回值时,可以带入/带出多个不同类型的值。注意:它是引用类型。
战斗程序
//java(源代码)
变量作用域(c#略,见p76)
P103直接讲例5-2(仅java)
重载
	例:两、三个数最大值
	p128,例5-14(仅java,多个数的和)
构造方法
	介绍构造方法的意义,构造Person
	P108例5-6,知识点:构造重载(长方体,设各边长,算体积)
	掷色子程序(仅C#)
静态
{	//仅java
静态方法:P112例5-7
静态属性:提一下
	看p111-112页,1,2
注:java里静态内容实际上可以被对象访问,但这不是通用写法,其他语言并不允许。应尽量使用类来访问静态内容。
}
{
	//C#
	静态属性+静态方法
例:
class Person
{
public static int rk = ;
public static void war()
{
rk--;
} }
class Program
{
static void Main(string[] args)
{
Person a = new Person();
/*作为静态属性和方法,人口和战争属于全人类,无法被某个人访问。
* 以下两行代码错误
a.rk = 30;
a.war();
*/
Person.rk--;
Person.war();
Console.WriteLine(Person.rk);
Console.ReadKey();
}
}
}
---------------面向对象进阶----------------------------
继承例:球继承圆的半径、面积。代码
修饰符(JAVA看看视频,17分28秒,C#P12页第三点)
this和super
	P119例5-9(this),例5-10(主要讲super),例5-11(this和super综合)
子类对象是可以赋值给父类变量的(例:球对象赋值给圆变量)
{//仅java
子类与父类具有同名方法时:默认为方法重写
例:Person1继承Person类,内存初始化
	简单子类重写父类方法:P129,例5-15
	final修饰方法可阻止重写
	子类重写父类方法:P126例5-13
}
{//仅C#
具有同名方法时内存中的状态:默认为屏蔽
例:Person1继承Person类,内存初始化
	以圆球为例说明方法的屏蔽与重写
1、父类授权【可以(virtual),不可以(无,即屏蔽)】
	2、子类是否重写【重写(override),不重写(new)】
}
---------------团队编程内容--------------------------
抽象类与抽象方法(必须一起用,规定了必须重写方法)
一般用于开发小组内部讨论概念的时候,通常作为后续开发的标准和依据。
P124例5-12
例5-12扩展讲解:
建抽象类的时候,注意如下图设置(省得手输)

抽象类“形状”代码:
public abstract class Shape
{
abstract void getArea();
}
实现类“圆”代码:
public class Circle extends Shape
{
double r;
Circle(double x)
{
r=x;
}
void getArea()
{
System.out.println("圆形面积是:"+3.14*r*r);
}
}
实现类“矩形”代码:
public class Rectangle extends Shape
{
double c,k;
Rectangle(double x,double y)
{
c=x;
k=y;
}
void getArea()
{
System.out.println("矩形面积是:"+c*k);
}
}
main代码:
public static void main(String[] args)
{
// TODO Auto-generated method stub
Circle cc=new Circle(5.6);
Rectangle rt=new Rectangle(8, 6);
Shape s;
cc.getArea();
rt.getArea();
s=cc;
s.getArea();
s=rt;
s.getArea();
}
对比这个例子和书上的例5-12,看看有什么不同。
差异最大的是main函数。声明的抽象类变量可以指向任何一个它派生的具体类。道理和继承相同。由此可见抽象类的作用(可用于检验的类设计模版)
接口(一般用于项目总体设计时,跨开发小组统一开发标准):
- 一般仅用于描述要实现的动作(C#中无字段,可有属性、方法声明,不允许实现,无访问修饰符。属性方法需要具体实现。),以小项目松散耦合为目的,可多继承。
- 应尽量避免使用中的接口污染,即接口功能应尽量单一(比如规划“通话”接口时想着手机,规定必须有接打电话和收发短信的功能,这就让写“对讲机”的程序员很难受)。
- 用法与抽象类类似(都是相当于模版的东西),注意体会概念和使用场合的区别。
例:龟车赛跑
"类"的讲稿的更多相关文章
- Java类的继承与多态特性-入门笔记
		相信对于继承和多态的概念性我就不在怎么解释啦!不管你是.Net还是Java面向对象编程都是比不缺少一堂课~~Net如此Java亦也有同样的思想成分包含其中. 继承,多态,封装是Java面向对象的3大特 ... 
- C++ 可配置的类工厂
		项目中常用到工厂模式,工厂模式可以把创建对象的具体细节封装到Create函数中,减少重复代码,增强可读和可维护性.传统的工厂实现如下: class Widget { public: virtual i ... 
- Android请求网络共通类——Hi_博客 Android App 开发笔记
		今天 ,来分享一下 ,一个博客App的开发过程,以前也没开发过这种类型App 的经验,求大神们轻点喷. 首先我们要创建一个Andriod 项目 因为要从网络请求数据所以我们先来一个请求网络的共通类. ... 
- ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库
		在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ... 
- ASP.NET Core 折腾笔记二:自己写个完整的Cache缓存类来支持.NET Core
		背景: 1:.NET Core 已经没System.Web,也木有了HttpRuntime.Cache,因此,该空间下Cache也木有了. 2:.NET Core 有新的Memory Cache提供, ... 
- .NET Core中间件的注册和管道的构建(2)---- 用UseMiddleware扩展方法注册中间件类
		.NET Core中间件的注册和管道的构建(2)---- 用UseMiddleware扩展方法注册中间件类 0x00 为什么要引入扩展方法 有的中间件功能比较简单,有的则比较复杂,并且依赖其它组件.除 ... 
- Java基础Map接口+Collections工具类
		1.Map中我们主要讲两个接口 HashMap 与 LinkedHashMap (1)其中LinkedHashMap是有序的 怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ... 
- PHP-解析验证码类--学习笔记
		1.开始 在 网上看到使用PHP写的ValidateCode生成验证码码类,感觉不错,特拿来分析学习一下. 2.类图 3.验证码类部分代码 3.1 定义变量 //随机因子 private $char ... 
- C# 多种方式发送邮件(附帮助类)
		因项目业务需要,需要做一个发送邮件功能,查了下资料,整了整,汇总如下,亲测可用- QQ邮箱发送邮件 #region 发送邮箱 try { MailMessage mail = new MailMess ... 
随机推荐
- 部署LNMP应用平台
			一.LNMP应用平台概述 1.概述:LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构.Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/ ... 
- 短uuid生成
			UUID UUID是128位的全局唯一标识符,通常由32字节的字符串表示.它可以保证时间和空间的唯一性,python中称为UUID,其他语言中可能称为GUID. 它通过MAC地址.时间戳.命名空间.随 ... 
- python测试开发django-71.自定义标签tag
			前言 django的模板里面有很多标签可以快速实现一些功能,比如{% url url_name%} 可以快捷的导入一个本地url地址. 上一篇我们可以自定义一些过滤器https://www.cnblo ... 
- 前端(1)HTML介绍
			1.1 HTML介绍 1.1Web服务本质 服务端 import socket server = socket.socket() server.bind(("127.0.0.1", ... 
- 【java】定时任务@Scheduled
			每隔5秒执行一次:"*/5 * * * * ?" 每隔1分钟执行一次:"0 */1 * * * ?" 每天23点执行一次:"0 0 23 * * ?& ... 
- JSPDF支持中文(思源黑体)采坑之旅,JSPDF中文字体乱码解决方案
			我拍个砖,通常标称自己文章完美解决何种问题的,往往就是解决不了任何问题! 众所周知,JSPDF是一个开源的,易用的,但是对中文支持非常差的PDF库. 下面,我教大家,如何在pdf中使用思源黑体.思源黑 ... 
- Socket网络编程——C++实现
			本代码可直接使用 根据TCP/IP三次握手,实验时可使用两台电脑,或者打开两个终端模拟通信. 服务器端: #include <iostream> #include <windows. ... 
- 【线段树】【P5522】[yLOI2019] 棠梨煎雪
			C [yLOI2019] 棠梨煎雪 Background 岁岁花藻檐下共将棠梨煎雪 自总角至你我某日辗转天边 天淡天青 宿雨沾襟 一年一会信笺却只见寥寥数言 --银临<棠梨煎雪> Desc ... 
- K8s容器资源限制
			在K8s中定义Pod中运行容器有两个维度的限制: 1. 资源需求:即运行Pod的节点必须满足运行Pod的最基本需求才能运行Pod. 如: Pod运行至少需要2G内存,1核CPU 2. 资源限额: ... 
- Apache的安装部署 2(加密认证 ,网页重写 ,搭建论坛)
			一.http和https的基本理论知识1. 关于https: HTTPS(全称:Hypertext Transfer Protocol Secure,超文本传输安全协议),是以安全为目标的HTTP通道 ... 
