测试

交换两个变量的值

int num1 = 5;int num2=6;

通过程序交换让num1 = 6,num2=5;

求两个数的最大值 (求三个数最大值)

求1-100之间所有奇数的和

找胖子,{200,120,90,180,110},找最胖的人

创建一个Person类,属性(姓名,性别,年龄),方法SayHi() 。

创建一个Employee类继承Person类,特有属性Salary

面向对象

什么是面向对象

---万物皆对象 一切事物都是对象

面向对象三大特征:封装、继承、多态

类和对象的区别

类是模具,创建对象的模具,抽象的

类是一种数据类型,用户自定义的数据类型

对象是具体的,是类的具体实例。

对象具有属性(特征) 名词和方法(行为) 动词

例:人、汽车、手机都是类,都代表一类事物,每一类事物都有特定的行为 张三,你家门口的那辆汽车,我手里的手机都是对象,都是具体的某一件 在类中,用数据表示事物的状态,用函数实现事物的行为)

变量作用域

变量作用域

成员变量—直接属于某个类,作用域在该类内部

局部变量

—声明该变量的块语句或方法结束的封闭括号之前的作用域内

private string name = "张三";
private int age;
public void SayHi() {
string name = "李四";
Console.WriteLine(name);
}
public void GetAge() {
Console.WriteLine(age); } public void Test() { for (int i = ; i < ; i++) {
Console.WriteLine(i);
}
Console.WriteLine(i);
}
public void Test0()
{
int i = ;
for ( i = ; i < ; i++)
{
Console.WriteLine(i);
}
Console.WriteLine(i); if (i == )
{
int age = ;
}
else{
int age = ;
}
}

封装

遥控器刚出来时候很神奇,点个按钮就能换电视台、切音量、关电视。而我们使用遥控器的人不需要知道他是怎么实现的(你只需要付钱就可以)

和遥控器类似,面向对象的封装就是把事物的状态和行为封装在类中,使用类的人不需要知道类内部是怎么实现的,只要调用其中的属性和方法实现功能就行。就想你使用遥控,不需要知道他是怎么控制电视的,只要知道按钮能换台就行

继承

—卡车

— 轿车

卡车和轿车都是车,都有轮子、发动机。但是卡车又能拉货,轿车能拉人

子类继承父类的属性和方法,使创建子类变得很简单,实现了代码重用。

类的单根继承性

关于继承的那些事儿

案例:定义父亲类(姓,财产,血型),儿子类(玩游戏),女儿类(化妆)

protected

base this

子类构造函数必须指明调用父类哪个构造函数

练习:定义学生类(姓名、性别、年龄、成绩,Hello方法)、老师类(姓名、性别、年龄、工资、Hello方法)从中抽象出一个父类,通过构造函数给子类属性赋值this base

继承还有一个重要的特性,父类对象可以引用子类实例。
儿子继承父亲,儿子又把管理自己事务的权利交给父亲,那么父亲就可以代表儿子处理事务,这就是父类对象引用子类实例。现在生活中,父母可以代表儿子处理事务,总公司可以代表子公司生命权利。 将子类对象赋值给父类对象,所得到对象是这样的一个对象:它是一个编译是为父类对象,但运行却是一个子类对象。具体特征如下:  .被声明为父类对象  .拥有父类属性  .占用子类的内存空间  .子类方法覆盖父类的方法时,此时对象调用的是子类的方法;否则,自动调用继承父类的方法.  .我人认为这个对象既不是父类对象,也不是子类对象.当我们用到它的方法时,  我便把它看成子类对象;若用到它的属性时,我把它看成父类对象.  它是一个占用父类属性,而使用子类方法的对象.至于到底是什么对象,我认为还是得根据声明来,它应算是父类对象,但拥有子类方法.

访问修饰符

public 任何地方

private 当前类中可以访问

protected 当前类及子类中可以访问

*internal 当前程序集可以访问

访问级别约束

访问级别约束:子类访问级别不能比父类高(等级观念),因为子类能够出席的场合父类都应该能出席,如果父类可访问级别比子类低就有了父类去不了的场合(儿子能去的地方爹一定要能去)。举例;方法、属性等暴露的返回值、参数的数据类型不能比方法、属性或者所在类的可访问级别低,因为这些方法、属性要能在高级场合出现,如果用到的类型却不能在这个场合出现就明显不合理了。

多态

先看看ToString()方法

多态就是指不同对象收到相同消息时,会产生不同行为,同一个类在不同的场合下表现出不同的行为特征

里氏替换原则

父类引用指向子类对象 is-a 关键字as is

怎么实现多态1-抽象类abstract

什么是抽象类

不能被实例化的类(不能new)

抽象类的特点

见备注

案例1:计算形状Shape(圆circle,矩形Square ,正方形rectangle)的面积、周长

案例2:动物animal   都有吃eat和叫bark的方法,狗dog和猫cat叫的方法不一样

练习:学生类和老师类中抽象出父类(person),并让学生和老师都要具有SayHello和起立standup两个方法

做网站的公司(抽象类)  你给我活我去开发网站,但是网站需要一部分flash,我公司力都是程序员(抽象类中有实现的方法)。没人会做flash(抽象方法),于是我把做flash这部分工作给其它公司去做(重写抽象方法的类)

抽象类为子类提供所需要的成员
抽象类中的成员既可以有实现也可以无实现
抽象类必须由其子类实现它的抽象成员(除非子类也是抽象类)
抽象类不能被实例化
一个类只能继承一个抽象类(类的单根继承性) 抽象方法(成员)不能有实现,必须被子类重写override(除非子类也是抽象类)
抽象方法(成员)的只能出现在抽象类中。 多态性的含义:使得能够利用基类的指针来引用不同子类的对象,以及根据所引用对象的不同,以不同的方式执行相同的操作。
多态的作用:把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。

虚方法virtual

虚方法可以给父类中的方法一个实现,比如ToString()方法

虚方法必须有实现部分,抽象方法没有提供实现部分

案例:可以把形状类中的计算面积的方法改为虚方法

练习:把person类中的SayHello改为虚方法让其默认为学生的 虚方法和抽象方法的区别 见备注 方法的重写override和隐藏new 见备注

面试题:A a = new A(); A a = new B();

虚方法和抽象方法的区别
虚方法必须有实现,抽象方法必须没有实现
抽象方法必须在抽象类中声明,虚方法可以出现在抽象类中
抽象方法必须在子类中重写,虚方法可以被重写 方法的重写override和隐藏new
重写 让子类的函数覆盖基类的函数
隐藏 让子类的函数隐藏父类的函数
经典面试题:
 class A
        {
            public void F()
            { Console.WriteLine("A.F"); }
            public virtual void G()
            { Console.WriteLine("A.G"); }
        }
        class B : A
        {
            //隐藏
            public new void F()
            { Console.WriteLine("B.F"); }
          }
 //一般情况,没有体现多态
            A a = new A();
            a.F();//A.F
            a.G();//A.G
            B b = new B();
            b.F();//B.F
            b.G();//B.G
            //体现多态特征
            A a1 = new B();
            a1.F();//A.F,隐藏
            a1.G();//B.G

方法
1、求两个数的和
2、求两(三)个数的最大值
3、求一个数是不是素数 “素数”是指除了能被1和自身整除外,不能被任何其它整数整除的自然数。
4、求一个整数数组中所有数的和
5、求数组中的最大值

练习:定义学生类(姓名、性别、年龄、成绩,Hello方法)、老师类(姓名、性别、年龄、工资、Hello方法)从中抽象出一个父类,通过构造函数给子类属性赋值this base

面向对象猜拳

面向对象(class0420)的更多相关文章

  1. angular2系列教程(六)两种pipe:函数式编程与面向对象编程

    今天,我们要讲的是angualr2的pipe这个知识点. 例子

  2. 一起学 Java(二)面向对象

    一.方法函数 函数也称为方法,就是定义在类中的具有特定功能的一段独立代码.用于定义功能,提高代码的复用性. 函数的特点1> 定义函数可以将功能代码进行封装,便于对该功能进行复用:2> 函数 ...

  3. js面向对象学习 - 对象概念及创建对象

    原文地址:js面向对象学习笔记 一.对象概念 对象是什么?对象是“无序属性的集合,其属性可以包括基本值,对象或者函数”.也就是一组名值对的无序集合. 对象的特性(不可直接访问),也就是属性包含两种,数 ...

  4. 前端开发:面向对象与javascript中的面向对象实现(二)构造函数与原型

    前端开发:面向对象与javascript中的面向对象实现(二)构造函数与原型 前言(题外话): 有人说拖延症是一个绝症,哎呀治不好了.先不说这是一个每个人都多多少少会有的,也不管它究竟对生活有多么大的 ...

  5. .NET 基础 一步步 一幕幕[面向对象之对象和类]

    对象和类 本篇正式进入面向对象的知识点简述: 何为对象,佛曰:一花一世界,一木一浮生,一草一天堂,一叶一如来,一砂一极乐,一方一净土,一笑一尘缘,一念一清静.可见"万物皆对象". ...

  6. 简单分析JavaScript中的面向对象

    初学JavaScript的时候有人会认为JavaScript不是一门面向对象的语言,因为JS是没有类的概念的,但是这并不代表JavaScript没有对象的存在,而且JavaScript也提供了其它的方 ...

  7. Java程序员应该了解的10个面向对象设计原则

    面向对象设计原则: 是OOPS(Object-Oriented Programming System,面向对象的程序设计系统)编程的核心,但大多数Java程序员追逐像Singleton.Decorat ...

  8. JavaScript学习笔记(三)——this、原型、javascript面向对象

    一.this 在JavaScript中this表示:谁调用它,this就是谁. JavaScript是由对象组成的,一切皆为对象,万物皆为对象.this是一个动态的对象,根据调用的对象不同而发生变化, ...

  9. 带你一分钟理解闭包--js面向对象编程

    上一篇<简单粗暴地理解js原型链--js面向对象编程>没想到能攒到这么多赞,实属意外.分享是个好事情,尤其是分享自己的学习感悟.所以网上关于原型链.闭包.作用域等文章多如牛毛,很多文章写得 ...

随机推荐

  1. python 开发webService

    最近在学习用python 开发webservice,费了半天时间把环境搭好,记录下具体过程,以备后用. 首先系统上要有python.其次要用python进行webservice开发,还需要一些库: 1 ...

  2. HTTP verb的安全性和幂等性

    Http协议规定了不同方法的安全特性和幂等特性,作为服务提供者的服务器必需为客户端提供这些特性. 安全性,仅指该方法的多次调用不会产生副作用,不涉及传统意义上的“安全”,这里的副作用是指资源状态.即, ...

  3. mysql.zip免安装版配置

    MYSQL ZIP免安装版配置 1. 下载MySQL 选择自己想要的.本次安装.我使用的是mysql-5.6.17-winx64  地址:http://dev.mysql.com/downloads/ ...

  4. 双十一运维怎么过,OneAPM 帮你救火,轻松运维

    一年一度的双十一来了 有人剁手买买买,有人愁眉苦脸抱着服务器哭 对,说的就是你,汪 苦逼的运维工程师双十一怎么过来的? 守着电脑看预警还是通宵加服务器扩容 还是帮女朋友守着购物车等着一键清空 或者 今 ...

  5. 【BZOJ 1038】 1038: [ZJOI2008]瞭望塔

    1038: [ZJOI2008]瞭望塔 Description 致力于建设全国示范和谐小村庄的H村村长dadzhi,决定在村中建立一个瞭望塔,以此加强村中的治安.我们将H村抽象为一维的轮廓.如下图所示 ...

  6. 简单Sql语句统计每年每个月的数据,每个月为数据的每列,简单SQL练习

    有一张表,数据如下 请写出结果为以下的SQL语句. 在mysql中创建表 CREATE TABLE `aa` (  `id` int(10) NOT NULL AUTO_INCREMENT COMME ...

  7. winform自定义文件程序-- 不允许所请求的注册表访问权(ZSSQL)

    常见问题1: 不允许所请求的注册表访问权 win7.win8 双击程序文件ZSSQL时候会出现 不允许所请求的注册表访问权 的弹窗异常 解决方法:ZSSQL.exe 右键 属性--兼容性--以管理员身 ...

  8. redisb并发访问慢出现的问题

    最近项目一上线,就问题颇多,本地测试,ok,上线后,大用户量的时候,顶不住.用了一个礼拜的时间发现的问题,总结下来. 项目是netty4.0,reids2.8,nginx等框架.目前是4台proxy服 ...

  9. Protected Functions 是理解OO的难点和关键

    Protected Functions 是理解OO的难点和关键 private和public函数都好理解,这里就不多说了,夹在中间的prortected却有许多精妙之处,说说我的几个疑问和看法:1. ...

  10. MSSQLServer基础05(联合查询,连接查询)

    联合结果集union(集合运算符) 集合运算符是对两个集合操作的,两个集合必须具有相同的列数,列具有相同的数据类型(至少能隐式转换的),最终输出的集合的列名由第一个集合的列名来确定.(可以用来连接多个 ...