第五章面向对象程序设计

本文介绍了面向对象编程的基本概念,包括类与对象的关系,对象的属性和方法,以及封装、继承、重载和重写等核心概念。类是对象的抽象,对象则是类的具体实例。封装保护了数据,而继承则允许扩展新的属性和方法。此外,还讨论了构造函数、析构函数的作用,以及静态成员和属性的使用。
摘要由CSDN通过智能技术生成

面向对象程序设计

5.1 面向对象程序设计概述

  • 类和对象
    类是对象的抽象,对象是类的具体

  • 属性,方法和事件
    属性是对象的特征,
    方法:类比函数,用于实现各种功能,
    事件是是对象能够识别和响应的某些操作

  • 封装:就是将一些数据和操作封装起来形成类
    封装具有隐蔽性,能够保护数据,被封装的数据和方法只有通过公共接口才能被外界访问

  • 继承:从基类中继承,扩展了新的属性和方法,成为基类的派生类,原来的类就是这个其派生类的基类

  • 重载和重写
    重载:方法名相同,参数类型或参数个数不同就会有不同的具体实现形式
    重写:方法名相同,参数个数和参数类型相同,但是实现形式不同
    在基类中定义可以重写的方法(Overrideable)的方法,在派生类中利用覆盖(Override)可以对基类中已声明的可重写的方法重新实现

  • 面向对象的优点
    维护简单:类是独立的
    可扩充性:
    代码重用
    多态性:一个接口,多个方法

5.2 类

  • 类的声明

     		**public class Person**
    

public(公有类):修饰符,其他还有:protected(保护类,只能从类的内部和其派生类访问),internal,private,abstract(抽象类,不允许创建类的对象),sealed(密封类,不能派生)

  • 类的成员:数据成员和函数成员
    数据成员:字段和常量
    函数成员:属性,方法,委托,事件,索引器,运算符,构造函数,析构函数

  • 字段:public int n;
    若没有声明修饰符,默认为private

  • 常量字段:public const int n;——使用const修饰

  • 只读字段:public readonly int n;——使用readonly修饰

创建对象必须有new

5.3 对象

  • 创建类的对象

    Person p = new Person();

    p是属于对象引用变量

  • 访问对象中的字段
    P.pno;

  • 调用对象的方法
    P.setdat();

  • 类对象的内存空间分配方式
    P:对象引用变量分配在栈空间中,对象实例分配在堆空间中

所以多个对象引用变量可以指向同一个实例

5.4 命名空间
using System
namespace myProj{}

using可以为命名空间中的类指定别名
eg.using myns = System.Math;
myns.Sin(0.5)就相当于System.Math.Sin(0.5);

命名空间可以嵌套
namespace N1
{
namespace N2
{
class A2{}
}
}

5.5 构造函数
在创建对象时自动执行的类方法
一般类会默认自带一个无参数的构造函数
若自己定义一个带参数的构造函数,那么要手工编写一个无参数的构造函数

可以有多个构造函数,但是所有构造函数的名称必须与类名相同,参数各不相同
构造函数不可被继承
构造函数不能像其他方法那样调用
声明类对象时,根据传递的参数类型或个数决定调用哪个构造函数

eg. public class Tpoint1
{
	public Tpont1();			//没有返回类型,既不是返回值函数,也不是void函数
	public Tpoint1(int x1,int y1)
	{
		x = x1;
		y = y1;
	}
}
  • 析构函数——对象被销毁时执行的方法
  • ~Tpoint1()
    //前面加“~”
    现在程序执行到最后都会自动销毁,就会执行这个析构函数

5.6 静态成员
静态:为了实现数据共享

  • 静态字段
    eg. static int f2;
    //创建出来的对象实例中的f2储存的数据都是相同的且以最终变动后的
  • 静态方法
    eg.static public void add();
    静态方法的使用是 类名.方法
  • 静态构造函数
    一个类只能有一个静态构造函数,且不带参数
    静态构造函数不会被继承
    在类的任何实例或任一静态成员被引用之前自动调用静态构造函数
    所有的构造函数中静态构造函数最先执行

5.7 属性

  • 属性的声明
    eg.
    public double Hours
    {
    get{return seconds/3600;}
    set{second = value*3600;}
    }

set 访问器可以当成一个方法,其总是拥有一个单独的,隐式的值参数value

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值