C# 面向对象4 构造函数
构造函数
1.构造函数用来创建对象,并且可以在构造函数中对对象进行初始化.
(给对象的每个属性依次的赋值)
2.构造函数是用来创建对象的特殊方法:
1.方法名和类名一样.
2.没有返回值,连void都不用..
**创建对象的时候会执行构造函数.(静态类呢?静态类不创建对象)
3.new 关键字
Person zs = new Person();
new帮助我们做了3件事儿:
1.在内存中开辟了一块空间
2.在开辟的空间中创建对象
3.调用对象的构造函数进行初始化
**所以构造函数必须是Public!
**构造函数可以有参数,new对象的时候传递函数参数即可.
4.构造函数可以重载,也就是有多个参数不同的构造函数.
**如果不指定构造函数,则类有一个默认的无参构造函数;
**如果指定了构造函数,则不再有默认的无参构造函数;
**如果类中已经有指定参数的构造函数,如果需要无参构造函数,则需要自己来写.
**构造函数的最大优点是,可以方便快捷的对对象初始化!!!
类代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace _04面向对象练习
{
public class Student
{
//字段,属性,方法,构造函数 //构造函数
public Student(string name,int age,char gender,int chinese,int math,int english)
{
//
this.Name = name;
this.Age = age;
this.Gender = gender;
this.Chinese = chinese;
this.Math = math;
this.English = english;
} public Student(string name)
{
this.Name = name;
} public Student()
{
Console.WriteLine("Hello!");
} private string _name;
public string Name
{
get { return _name; }
set { _name = value; }
} private int _age;
public int Age
{
get { return _age; }
set {
if (value < || value > )
value = ; _age = value; }
} private char _gender;
public char Gender
{
get {
if(_gender !='男'&&_gender!='女')
return _gender='男'; return _gender; }
set { _gender = value; }
} private int _chinese;
public int Chinese
{
get { return _chinese; }
set { _chinese = value; }
} private int _math;
public int Math
{
get { return _math; }
set { _math = value; }
} private int _english;
public int English
{
get { return _english; }
set { _english = value; }
} public void SayHello()
{
Console.WriteLine("我叫{0},我今年{1}岁了,我是{2}生",this.Name,this.Age,this.Gender);
} public void ShowScore()
{
Console.WriteLine("我叫{0},我的总成绩是{1},平均成绩是{2}", this.Name, this.Chinese + this.Math + this.English, (this.Chinese + this.Math + this.English)/);
} }
}
main代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace _04面向对象练习
{
class Program
{
static void Main(string[] args)
{ Student a = new Student("zq", , '中', , , );
//a.Name = "zq";
//a.Age = 31;
//a.Gender = '男';
//a.Chinese = 90;
//a.English = 89;
//a.Math = 99; a.SayHello();
a.ShowScore(); Student b = new Student("junfeng",,'女',,,);
//b.Name = "junfeng";
//b.Age = 34;
//b.Gender = '女';
//b.Chinese = 61;
//b.Math = 90;
//b.English = 100; b.SayHello();
b.ShowScore(); Console.ReadKey();
}
}
}
C# 面向对象4 构造函数的更多相关文章
- php面向对象之构造函数作用与方法
什么是构造函数呢?构造函数又有什么作用呢? 构造函数 ,是一种特殊的方法.主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中.特别的一个类可以有多个 ...
- 从认识面向对象到构造函数的标准写法(构造函数的继承、多态、ECMA6中新代替语法class) - 下
笔记一个包含:认识面向对象.构造函数的封装.继承.多态.ECMA6中新代替语法class 下:包括构造函数的继承.多态.ECMA6中新代替语法class 构造函数的继承 从父一级延续下来的属性和功能( ...
- PHP面向对象 实例化 构造函数 封装 继承 静态
PHP面向对象 实例化 构造函数 封装 继承 静态 面向对象: 一:定义类 class Dog { var $name; var $age; var $pinzhong; function Jiao( ...
- php面向对象之构造函数和析构函数
php面向对象之构造函数和析构函数 简介 php面向对象支持两种形式的构造函数和析构函数,一种是和类同名的构造函数(php5.5之前),一类是魔术方法(php5.5之后).与类名相同的构造函数优先级比 ...
- python之面向对象与构造函数
一.面向对象介绍 不同的编程范式本质上代表对各种类型的任务采取的不同的解决问题的思路, 大多数语言只支持一种编程范式, 当然也有些语言可以同时支持多种编程范式. 两种最重要的编程范式分别是面向过程编程 ...
- js面向对象(构造函数与继承)
深入解读JavaScript面向对象编程实践 Mar 9, 2016 面向对象编程是用抽象方式创建基于现实世界模型的一种编程模式,主要包括模块化.多态.和封装几种技术. 对JavaScript而言,其 ...
- js面向对象之构造函数
最简单的面向对象程序<script type="text/javascript"> var obj = new Object(); obj.qq = '10791611 ...
- js基础——面向对象(构造函数)
1.面向对象:类的标志,通过类可创建多个具有相同属性和方法的对象 2.创建对象 1)工厂模式方式:避免重复实例化但未能解决识别问题 function boss(name, age) { ...
- .NET 基础 一步步 一幕幕[面向对象之构造函数、析构函数]
构造函数.析构函数 构造函数: 语法: //无参的构造函数 [访问修饰符] 函数名() :函数名必须与类名相同. //有参的构造函数 [访问修饰符] 函数名(参数列表):函数名必须与类名相同. 作用: ...
随机推荐
- 撩测试MM神器cypress使用入门
不很久不很久以前 据说某家公司有两位前端,天天撸bug,为啥嘞?只怪测试MM倾人国,轻语哥哥有bug.✧(๑•̀ㅂ•́)و✧ 可是最近两位有点犯愁 Σ(っ °Д °;)っ.测试MM有几次提了紧急bug ...
- light4j轻量级微服务应用
最近对light-4j轻框架比较感兴趣,于是对现有应用做了一次重构,现将其间的一些点滴所得分享出来. 项目打包 pom.xml配置了两个profile:debug支持mvn exec:exec启动应用 ...
- 评CSDN上一篇讲述数据迁移的文章“程序员 12 小时惊魂记:凌晨迁移数据出大事故!”
原文地址:https://blog.csdn.net/csdnnews/article/details/98476886 我的评论:热数据迁移,本不该搞突击,这样一旦出现问题后果不堪设想,多少DBA和 ...
- Java 谷歌浏览器开发必备插件
1.谷歌访问助手 下载网址:http://www.ggfwzs.com/ 2.Json Viewer 格式化请求接口,返回Json数据格式,可以在浏览器展示 3.Restlet client 一种类似 ...
- C# 线程thread
一.问题总结 1. 在WinForm开发过程中用到线程时,往往需要在线程中访问线程外的控件,比如:设置textbox的Text值等等.如果直接访问UI控件会报出“从不是创建控件的线程访问它”错误.控件 ...
- 如何在VUE中使用leaflet地图框架
前言:在leaflet的官方文档只有静态的HTML演示并没有结合VUE的demo 虽然也有一些封装好的leaflet库例如Vue-Leaflet,但是总感觉用起来不是那么顺手,有些业务操作还是得用l ...
- linux查询日志命令总结
[背景] 排查线上环境问题,少不了去线上查日志.而使用什么命令,能快速准确地查到我们需要查找地日志信息,也是我们需要掌握的一项技能. [命令] Linux查看命令有多种:tail,head,cat,t ...
- Vue实现点击时间获取时间段查询功能
二话不说,先上图 实现如上代码: //获取本周第一天 showWeekFirstDay: function () { let Nowdate = new Date(); let WeekFirstDa ...
- fio 硬盘测试工具
一.windows环境 1. 安装fio:http://www.bluestop.org/fio/ 可以选择不同版本的安装,安装后在C:\Program Files\fio目录中可以找到fio的执行程 ...
- 【转载】mysql行列转换方法总结
[转载]mysql行列转换方法总结 [MySQL] 行列转换变化各种方法实现总结(行变列报表统计.列变行数据记录统计等) Mysql 列转行统计查询 .行转列统计查询 在某些数据库中有交叉表,但在My ...