面向对象---4

面向对象三大特性:封装、继承、多态
一、封装:
    字段(成员变量)    属性    方法(成员函数)    构造函数
实例
静态

二、继承:单继承。
(一)什么是继承?
1.父类成员会派生给子类。
2.子类可以扩展父类。
3.子类可以替代父类。    子类对象 is a 父类

(二)继承的语法:
class 子类名: 父类名
{
}

(三)继承的规则:
1.字段的继承
2.属性的继承
3.方法的继承
4.构造的继承

三、多态:
(一)编译多态(静态多态):方法的重载来实现。
(二)运行多态(动态多态):继承和重写来实现。
运行多态就是在继承的基础上实现。
    父类引用指向子类的实例。

例子:吃饭。喂动物。

四、抽象类:abstract
抽象方法:只有方法的声明,没有方法的实现。abstract
public string SetName();
抽象属性:只有属性的声明,没有属性实现。
public string Name
{
    get;
    set;
}
抽象方法(属性)与抽象类的关系:

1.有抽象方法(属性)的类肯定是抽象类。
2.抽象类不一定有抽象方法(属性)。

接口:只有方法的声明、属性的声明。没有实现,也没有成员变量。
语法:
定义接口:
interface 接口名
{
    返回类型 方法名();
    属性类型 属性名
    {
        get;
        set;
    }
}
实现接口:
class 类名:接口名,接口名...
{
}
interface 接口名:接口名,接口名...
{
}
接口的实现可以实现多个接口。
每一个类只能有一个父类,但可以同时实现多个接口。
例:
    interface Openable
    {
        void Open();
    }

class Window : Openable
    {
    }

接口:制定规则。相关的类只要实现接口,就是该接口下的一个子类。其它设备或程设在调用的时候,只要基于接口进行调用即可,相应的设备或程序就会被调到。

*************接口****************

namespace ConsoleApplication1
{
    interface IUSB
    {
        void Start();
        void Stop();
    }
}

************继承子函数**************

namespace ConsoleApplication1
{
    class UDisk:IUSB
    {
        public void Start()
        {
            Console.WriteLine("U盘启动了,可以读写数据了。");
        }

public void Stop()
        {
            Console.WriteLine("U盘安全退出了。");
        }
    }
}

namespace ConsoleApplication1
{
    class KaoQinJi:IUSB
    {
        public void Start()
        {
            Console.WriteLine("考勤机启动。。。。");
        }
        public void Stop()
        {
            Console.WriteLine("考勤机安全退出");
        }
    }
}

******主函数*************

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using HQ.Test.CYL;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main2222(string[] args)
        {
            Computer c = new Computer();
            Mouse m = new Mouse();
            UDisk u = new UDisk();
            c.StartUSB(m);
            c.StartUSB(u);
            KaoQinJi k = new KaoQinJi();
            c.StartUSB(k);

c.StopUSB(k);

}
    }
}

**********调用函数*************
namespace ConsoleApplication1
{
    class Computer
    {
        public void StartUSB(IUSB usb)
        {
            usb.Start();
        }
        public void StopUSB(IUSB usb)
        {
            usb.Stop();
        }
    }
}

namespace ConsoleApplication1
{
    class Mouse:IUSB
    {
        public void Start()
        {
            Console.WriteLine("鼠标启动了,可以用鼠标操作电脑了。");
        }

public void Stop()
        {
            Console.WriteLine("鼠标设备停止了。");
        }
    }
}

namespace HQ.Test.CYL
{
    public class Mouse
    {
        public void Show()
        {
            Console.WriteLine("这不是鼠标,是老鼠!");
        }
    }
}

命名空间、项目、程序集。
(一)命名空间:namespace。
作用:对类进行逻辑上的分类管理。在同一个命名空间下,类名不许重复的。
使用:
1.在代码开头,使用using xxxxx;把命名空间导进来。以后再用该命名空间下的时候,可以省去命名空间。
2.每次使用类的时候,在此类之前写上命名空间,即使用类的完全限定名。如果所有的不同命名空间中出现了重名的类,在使用类的时候,就需要使用完全限定名。

命名空间与Java的包是不同的。Java的包,既有逻辑位置也有物理位置。.net的命名空间仅仅是逻辑上的概念。

如何设置默认命名空间?
在解决方案管理器的项目图标上右击,选择属性,设置默认命名空间。

(二)项目
项目主要是用来管理项目所有的文件的。

(三)程序集
就是程序编译运行时的中间代码。.exe或.dll。它们不像C或C++那样编译出来的都是二进制。它是中间代码(IL)
C#语言是两步编辑:第一步:从源代码编译成IL。第二步:运行的时候是从IL编译成二进制。在运行的内存中我们称之为程序集

时间: 2024-10-16 00:59:16

面向对象---4的相关文章

python学习 面向对象封装

from collectoins import namedtuplePoint=namedtuple('point',['x','y'])t1=Point(1,2)print(t1.x)print(t1.y)没有方法的类属性不会发生变化    定义简单 不能改变面向对象封装私有属性!!!私有方法!!!用装饰器描述的几个方法@property !!!@classmethod!!@staticmethod! 封装:class Teacher:     def __init__(self,name,p

python—面向对象的封装

封装 私有属性 class Teacher: __identifier = 'Teacher' #私有静态属性 def __init__(self,name,pwd) self.name = name self.__pwd = pwd #私有属性 内部使用,外部不能使用 def pwd(self): print(self.__pwd) alex = Teacher('alex','3714') alex.pwd() class Teacher: __identifier = 'Teacher'

python学习_day26_面向对象之封装

1.私有属性 (1)动态属性 在python中用双下划线开头的方式将属性隐藏起来.类中所有双下划线开头的名称,如__x都会自动变形成:_类名__x的形式.这种自动变形的特点是: a.类中定义的__x只能在内部使用,如self.__x,引用的就是变形的结果.b.这种变形其实正是针对外部的变形,在外部是无法通过__x这个名字访问到的.c.在子类定义的__x不会覆盖在父类定义的__x,因为子类中变形成了:_子类名__x,而父类中变形成了:_父类名__x,即双下滑线开头的属性在继承给子类时,子类是无法覆

python面向对象知识点疏理

面向对象技术简介 类: 用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例.class 类变量:类变量在整个实例化的对象中是公用的.类变量定义在类中且在函数体之外.类变量通常不作为实例变量使用. 数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据. 方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖,也称为方法的重写. 实例变量:定义在方法中的变量,只作用于当前实例的类. 继承:即一个派生类(de

php学习笔记 面向对象中[接口]与[多态性]的应用

代码如下: <?php /* 接口技术 * * 接口是一种特殊的抽象类,抽象类又是一种特殊的类 * * 接口和抽象类是一样的作用 * * 因为在PHP是单继承的,如果使用抽象类,子类实现抽象类就不能再去继承其他的类了 * * 如果既想实现一些规范,又想继承其他类.就要使用接口. * * 接口和抽象类的对比 * * 1.作用相同,都不能创建对象,都需要子类去实现 * * 2.接口的声明和抽象类不一样 * * 3.接口被实现方式不一样 * * 4.接口中的所有方法必须是抽象方法,只能声明抽象方法(不

php面向对象

面向对象 什么是面向对象? 面向对象编程(Object Oriented Programming, OOP, 面向对象程序设计)是一种计算机编程架构,OOP的一条基本原则是计算机程 序是由单个能够起到子程序作用的单元或对象组合而成,OOP达到了软件工程的三个目标:重用性.灵活性和扩展性.为了实现整体 运算,每个对象都能够接收信息.处理数据和向其它对象发送信息. 什么是面向对象编程呢? 把每个独立的功能模块抽象成类形成 对象,由多个对象组成这个系统,这些对象之间都能够接收信息.处理数据和向其它对象

面向对象注意事项

在面向对象中,有实例变量和类变量,实例变量为类对象的实例成员,而类变量不仅类可以直接调用,而且类的对象也可以调用.类对象可以对实例变量进行添加.修改.删除操作等... 下面就用个示例来做参考: #!/usr/bin/env python # -*- coding:utf-8 -*- class PersonInfo(object): commity_data = 123 def __init__(self,name,age): self.name = name self.age = age de

java面向对象:面向对象的思想和概述

1:面向对象思想 面向对象是基于面向过程的编程思想. 面向过程:强调的是每一个功能的步骤 面向对象:强调的是对象,然后由对象去调用功能 2:面向对象的思想特点 A:是一种更符合我们思想习惯的思想 B:可以将复杂的事情简单化 C:将我们从执行者变成了指挥者 开发,设计,特征 面向对象开发 就是不断的创建对象,使用对象,指挥对象做事情. 面向对象设计 其实就是在管理和维护对象之间的关系. 面向对象特征 封装(encapsulation) 继承(inheritance) 多态(polymorphism

6 面向对象之类和对象

1 面向对象和面向过程的区别 两者都是软件开发思想,先有面向过程,后有面向对象.在大型项目中,针对面向过程的不足推出了面向对象开发思想. 区别: 1)编程思路不同: 面向过程以实现功能的函数开发为主,而面向对象要首先抽象出类.属性及其方法,然后通过实例化类.执行方法来完成功能. 2)封装性:都具有封装性,但是面向过程是封装的是功能,而面向对象封装的是数据和功能. 3)面向对象具有继承性和多态性,而面向过程没有继承性和多态性,所以面向对象优势是明显. 2 类和对象 对象:客观存在的实体(一个具体的

简说面向过程与面向对象

昨天白天,因为在室外活动,无事可做,所以我思考了一天,在想怎么才能比较清晰的向人解释这两个概念.所以我对这两个概念的字面意思做了一下详细的解释.没想到,这可能真的会帮助我们非常简单的理解这两个概念. 面向:从字面上理解面向,就是我们的脸对着的地方,引申为我们能看到. 过程: 过程是事物从开始,到发展,到结束的整个经历 那么面向过程就是:我们能看到, 一个事物从 开始->发展->结束. 这对于我们写程序的人来说,可能会有感触,因为一开始我们写程序时.都是按照事件的发展.去安排计算机,一步一步的做