C#学习笔记7:C#面向对象编程方法(1)

今日继续我的C#学习笔记

主要用实际代码编程来学习研究C#面向对象的编程方法:直接看代码及注释即可:

目录

1、对类与对象概念的快速认知:

2、类和对象成员访问控制:

3、类的构造函数和析构函数:

4、类的属性:

5、类的继承重载与多态:


1、对类与对象概念的快速认知:

创建一个C#控制台应用程序OOExample,在其中编写一个Person类,在Person类中定义相应的属性与方法,最后实例化Person类,输出相应信息

1、类的定义与创建

2、私有成员定义与方法

3、成员变量定义及运用

 代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;/** 创建一个C#控制台应用程序OOExample,在其中编写一个Person类,*在Person类中定义相应的属性与方法,最后实例化Person类,输出相应信息*/namespace OOExample
{internal class Program{static void Main(string[] args){Person Person1 = new Person(); //用new实例化Person得到Person1//分别调用Person1的各个方法成员Person1.set("张三","男","20");//初始化Person1的个人信息方法Person1.show();//输出Person1的个人信息方法Person1.eat("Apple");//输出想吃的苹果的信息Console.ReadLine();//等待输入用于屏幕暂停}public class Person//定义Person类{private string name;//私有成员变量nameprivate string sex;//私有成员变量sexprivate string age;//私有成员变量age//成员方法set,用于设置某个人姓名,性别,年龄public void set(string namein,string sexin,string agein){name = namein;sex = sexin;age = agein;}//成员方法show,用于输出某个人姓名、年龄、性别具体信息public void show(){Console.WriteLine("姓名:{0}\n性别:{1}\n年龄:{2}\n",name,sex,age);}//成员方法eat ,用于输出想吃的食物信息public void eat(string sth){Console.WriteLine("我想吃:{0}",sth);}}}
}

运行结果:

2、类和对象成员访问控制:

写一控制台程序(关于成员访问控制及各种修饰符作用),从程序中分析访问控制权限

(1)public:

用这种修饰符修饰的成员称为公有成员。公有成员允许该类和其他类中的所有
成员访问。

(2)private:

用这种修饰符修饰的成员称为私有成员。私有成员只能被该类中的其他成员访问,其他类(包括派生类)中的成员是不允许直接访问的。在C#中private是默认的修饰符。

(3)protected:

用这种修饰符修饰的成员称为保护成员。保护成员可以被该类和其派生类中的成员访问,而其他类中的成员则不允许访问。


(4)interna:

用这种修饰符修饰的成员称为内部成员。内部成员只能被程序集内的类的成员访问,而程序集外的类(包括派生类)的成员是不允许访问的。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace Fcontrol
{internal class Program{static void Main(string[] args){first F = new first();F.pub = "main set first class public";//正确,允许访问其他类中的公有成员//F.pro = "main set first class protected";//错误,不允许访问其他类中保护成员//F.pri = "main set first class private";//错误,不允许访问其他类中的私有成员}//基础类firstclass first{public string pub;//公有成员protected string pro;//保护成员private string pri;//私有成员void fun(){pub = "public in first";//正确;允许访问本类中公有成员pro = "protected in first";//正确;允许访问本类中保护成员pri = "privatr in first";//正确;允许访问本类中私有成员}}//类second继承了基础类firstclass second :first{void fun1(){base.pub = "second set first class public";//正确;允许访问基类中公有成员base.pro = "second set first class protected";//正确;允许访问基类中保护成员//base.pri = "second set first class private";//错误;不允许访问基类中私有成员}}}
}

3、类的构造函数和析构函数:

创建控制台应用程序,使用构造函数,从程序结果分析中体会构造函数的使用

(1)构造函数的名称必须与类名同名,不允许有返回类型,要使用public修饰符修饰,否则在非派生类中不能调用它来创建对象。而一般方法不能和类名相同。
(2)构造函数的功能主要用于在类的对象创建时定义初始化状态。没有返回值,也不能用void 来修饰。
(3)一个类可以定义多个构造函数,成为构造函数的重载,但是重载的构造函数与重载的函数一样,其参数列表必须有所不同(参数个数不同或者参数类型不同)。
(4)构造函数不能直接被调用,必须通过new运算符在创建对象时才会自动调用。
(5)在定义类时,如果没有显式定义构造函数,则实例化对象时会自动调用默认的构造函数。如果一旦定义了构造函数,则默认构造函数不会被调用。默认构造函数的作用是将对象成员的析始值设置为默认的值,如数值类型变量被初始化为0,字符电型变量被初始化为(空值),字符类型变量被初始化为空格等

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace gouzaoxigou
{internal class Program{static void Main(string[] args){A a1 = new A();//调用无参数构造函数a1.fun();A a2 = new A("张三");//调用一个参数构造函数a2.fun();A a3 = new A("张三", 20);//调用俩个参数构造函数a3.fun();Console.ReadLine();}}class A{string name;int age;//无参数构造函数public A() { }//一个参数构造函数public A(string name){this.name = name;  }//俩个参数构造函数public A(string name, int age){this.name = name;this.age = age;}public void fun(){Console.WriteLine("姓名:{0}  年龄:{1}",name,age);}}}

4、类的属性:

 类还有一种特殊的成员称为属性,既可以被视作一种成员变量,也可以看作是一种成员方法,实际上是对成员变量的一种拓展。

编写控制台应用程序,定义一个类,在类中定义private字段 age 及对应的属性Age,在属性的 set 程序块中编写代码,实现对属性的赋值进行检查。在类中定义一个方法,在Main()方法中实现其调用。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace lei_Attribute
{internal class Program{static void Main(string[] args){Human.Age = 30;//通过属性Age给字段age赋值Console.WriteLine(Human.Printinfo());//输出字段age的值Console.ReadLine();}class Human{private static int age;//属性的主要作用是对字段的读和写,因此又把属性叫做字段访问器,get为读访问,set为写访问public static int Age{get { return age; }set{if (value > 0) { age = value; }//如果赋值给age的值大于0则保存else { age = 0; }}}public static int Printinfo() { return age; }}}}

 

5、类的继承重载与多态:

类的重要特征之一就是类的继承。继承是指一个类可以维承另一个类中的相关成员,被继承的类称为基类,继承而形成的类称为派生类。如果一个派生类继承一个基类,那么这个派生类会从其基类中维承得到所有的操作、属性、特征、事件,而基类中的实例构造函数、析构函数则不会被继承。
继承是指一个派生类或子类能够直接获得基类或父类已有的性和方法,不需要重复定义。继承具有传递性,但C#只支持单继承,也就是说一个类最多只允许从一个父类中派生,即只能有一个父类,但一个父类可以派生出多个子类。继承的语法格式为:

class 基类名
{成员;
}
class 派生类名:基类名
{成员;
}

创建控制台程序,通过在类中分别定义不同作用域的字段变量,并访问这些字段,来分析类、子类的作用域

using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.AccessControl;
using System.Text;
using System.Threading.Tasks;namespace lei_BclassD_jicheng
{internal class Program{static void Main(string[] args){B b = new B();b.Show();b.Shownew();Console.ReadLine();}public class A{private int priv;protected int prot;public void Show(){priv = 20;prot = 30;Console.WriteLine("private={0} protected={1}",priv,prot);Console.WriteLine("父类内容");}}public class B : A {public void Shownew(){//priv=40;//错误写法:父类中的private私有类在子类不可访问prot = 50;//对,父类中protected保护类在子类可以访问Console.WriteLine("protected={0}",prot);Console.WriteLine("子类内容");}}}
}

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/586505.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

寒冬已逝,“量子春天”正来

最近,全球对量子技术领域的私人投资有所下降,引发了一些观点认为这个领域可能正逐渐衰退。 政治家、资助者和投资者并不总是以科学为关注焦点。然而,某些科技领域偶尔会成为热点,正如20世纪50年代核能技术的兴起,那时人…

Adaboost集成学习 | Matlab实现基于GRU-Adaboost门控循环单元结合Adaboost集成学习时间序列预测(股票价格预测)

目录 效果一览基本介绍模型设计程序设计参考资料效果一览 基本介绍 Adaboost集成学习 | Matlab实现基于GRU-Adaboost门控循环单元结合Adaboost集成学习时间序列预测(股票价格预测) 模型设计 股票价格预测是一个具有挑战性的时间序列预测问题,可以使用深度学习模型如门控循环…

pygame三角形重心坐标填充 沿x轴旋转

import pygame from pygame.locals import * import sys import math# 初始化Pygame pygame.init()# 设置窗口大小 width, height 800, 600 screen pygame.display.set_mode((width, height)) pygame.display.set_caption(3D Triangle Fill with Barycentric Coordinates)# 定…

spring boot3登录开发-3(2短信验证登录/注册逻辑实现)

⛰️个人主页: 蒾酒 🔥系列专栏:《spring boot实战》 🌊山高路远,行路漫漫,终有归途 目录 写在前面 上文衔接 内容简介 功能分析 短信验证登录实现 1.创建交互对象 用户短信登录/注册DTO 创建用户登录VO…

css-盒子阴影

1.box-shadow: 10px 20px 10px 10px blue; 参数对应顺序:上下,左右 ,模糊程度,颜色 ,阴影大小 2.box-shadow: 10px 20px 10px 20px blue,-10px -20px 10px 50px red; 负号就是相反方向 支持多个阴影 在后面加逗号 3…

Red Hat配置本地yum源

Red Hat配置本地yum源 创建本地源文件夹 mkdir -p /mnt/cdrom挂载镜像文件至指定的目录 mount /dev/cdrom /mnt/cdrom备份本地源 cp -rf /etc/yum.repos.d /etc/yum.repos.d_$(date %Y%m%d_%H%M%S)删除默认原本地源 rm -rf /etc/yum.repos.d/*配置本地源,创建…

网页的血液——javascript

JavaScript 基础知识概述 1. JavaScript 介绍 JavaScript 是一种高级的、解释型的编程语言,它是一种基于对象的、事件驱动的语言,它允许开发者创建动态的网页。JavaScript 是一种脚本语言,它可以嵌入到 HTML 中,或者作为外部文件…

景联文科技提供高质量医疗健康AI大模型数据

医疗行业是典型的知识和技术密集型行业,其发展水平直接关系到国民健康和生命质量。 医疗健康AI大模型,作为人工智能的一个分支,能够通过学习大量的数据来生成新的数据实例,在医药研发、医学影像、医疗文本分析等都有广泛的应用前景…

websocket 局域网 webrtc 一对一 多对多 视频通话 的示例

基本介绍 WebRTC(Web Real-Time Communications)是一项实时通讯技术,它允许网络应用或者站点,在不借助中间媒介的情况下,建立浏览器之间点对点(Peer-to-Peer)的连接,实现视频流和&am…

【详细讲解语言模型的原理、实战与评估】

🌈个人主页:程序员不想敲代码啊🌈 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家🏆 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提…

电脑找不到msvcr120.dll如何修复,总结5种有效的方法

当您启动计算机并尝试运行某个应用程序时,屏幕上突然弹出一条醒目的错误提示:“电脑显示msvcr120.dll丢失”。这行简短却令人困扰的信息,明确地向您传达了一个关键问题:您的操作系统在当前环境下无法找到名为“msvcr120.dll”的动…

搭建Spark单机版环境

在搭建Spark单机版环境的实战中,首先确保已经安装并配置好了JDK。然后,从群共享下载Spark安装包,并将其上传至目标主机的/opt目录。接着,解压Spark安装包至/usr/local目录,并配置Spark的环境变量,以确保系统…