.Net学习笔记----2015-07-21(C#基础复习04,面向对象语法和继承复习)

面向对象:

1、封装、继承、多态

***字段:存储数据,访问修饰符应该设置为private 私有的

***属性:保护字段,对字段的取值和赋值进行限定

***new关键字: 1、在堆中开辟空间   2、在开辟的空间中创建对象  3、调用对象的构造函数

***this关键字:1、代表当前类的对象  2、显示的调用自己类里面的构造函数

***构造函数:初始化对象,当创建对象的时候会调用构造函数

***对字段的保护方法:

1、get()

2、set()

3、构造函数

***return的作用:

1、立即结束本次方法

2、在方法中返回要返回的值

示例代码:

    class Person
    {
        //字段、属性、构造函数、方法、接口
        //类内部的成员,如果不加访问修饰符,默认private
        string _name;

        public string Name
        {
            get { return _name; }
            set
            {
                if (value != "刘备")
                {
                    value = "刘备";
                }
                _name = value;
            }
        }
        int _age;
        public int Age
        {
            get
            {
                if (_age < 0 || _age > 100)
                {
                    return 0;
                }
                return _age;
            }
            set { _age = value; }
        }
        char _gender;
        public char Gender
        {
            get { return _gender; }
            set { _gender = value; }
        }
        int _chinese;

        public int Chinese
        {
            get { return _chinese; }
            set { _chinese = value; }
        }
        int _math;

        public int Math
        {
            get { return _math; }
            set { _math = value; }
        }
        int _english;

        public int English
        {
            get { return _english; }
            set { _english = value; }
        }

        public Person() { }
        public Person(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;
        }
        /// <summary>
        /// 代码冗余
        /// </summary>
        /// <param name="name"></param>
        /// <param name="age"></param>
        /// <param name="gender"></param>
        //public Person(string name, int age, char gender)
        //{
        //    this.Name = name;
        //    this.Age = age;
        //    this.Gender = gender;
        //}

        /// <summary>
        /// this的另一种用法,显示调用自己的构造函数,这里调用的是上面全参的构造函数
        /// </summary>
        /// <param name="name"></param>
        /// <param name="age"></param>
        /// <param name="gender"></param>
        public Person(string name, int age, char gender)
            : this(name, age, gender, 0, 0, 0)
        {

        }
        public Person(char gender)
        {
            if (gender != ‘男‘ && gender != ‘女‘)
            {
                gender = ‘男‘;
            }
            this.Gender = gender;
        }
        public void SayHello()
        {
            Console.WriteLine("{0}-----{1}-----{2}", this.Name, this.Age, this.Gender);
        }
    }
        static void Main(string[] args)
        {
            Person p = new Person(‘中‘);
            //给对象的每个属性赋值的过程,称之为对象的初始化
            p.Name = "张三";
            p.Age = -10;
            //p.Gender = ‘中‘;
            p.SayHello();

            Console.ReadKey();
        }

继承复习:

解决代码的冗余,实现多态,增加代码扩展性,便于维护

***继承的特性:

1、单根性

2、传递性

子类并没有继承父类的构造函数,而是会默认调用父类的无参的构造函数

    class Program
    {
        static void Main(string[] args)
        {
        }
    }

    public class Person
    {
        public Person(string name, int age, char gender)
        {

        }
        public string Name
        { get; set; }

        public char Gender
        { get; set; }
        public int Age
        { get; set; }
        public void CHLSS()
        {

        }
    }

    public class Student : Person
    {
        //在子类中调用父类的构造函数 使用关键字base
        public Student(string name, int age, char gender, int id)
            : base(name, age, gender)
        {
            this.ID = id;
        }

        /// <summary>
        /// 自动属性,本质和自己手写的一样,自动生成一个私有字段
        /// </summary>

        public int ID
        { get; set; }
    }

    public class Teacher : Person
    {
        public Teacher(string name, int age, char gender, double salary)
            : base(name, age, gender)
        {
            this.Salary = salary;
        }
        public double Salary
        { get; set; }
    }
时间: 2024-11-02 05:38:23

.Net学习笔记----2015-07-21(C#基础复习04,面向对象语法和继承复习)的相关文章

Linux学习笔记——2015/7/21

4.1.4 Linux常用命令-文件处理命令-链接命令 ln 生成链接文件 -s创建软链接 软链接:类似Windows快捷方式 注: 生成软链接文件  l开头   所有权限都是3个 rws 硬链接:   不能跨分区.不能针对目录使用.通过i节点识别 用户分三类 u g o 权限分三类 读 写 4.2.1 Linux常用命令-权限管理命令-权限管理命令chmod chmod  改变文件或目录权限 执行权限:所有用户.管理员root 语法:chmod [{ugoa}{+-=}{rwx}][文件或目录

【Ext.Net学习笔记】07:后续

程序员必看书籍(转载) C++: Prata<C++ Primer Plus>:基础,第一本书.(之前的版本也可,不过推荐最新的) Lippman<Inside C++ Object Model>:初级,加深语言层次上的理解.不过有点小老了.里面的cfront编译器早退出江湖好久了.思想值得学习 侯捷<STL源码剖析>:第三本书,中级,深入STL Vandevoorde<C++ Template>:第四本,中级,范式编程 罗剑锋<Boost>两本

APUE学习笔记:第一章 UNUX基础知识

1.2 UNIX体系结构 从严格意义上,可将操作系统定义为一种软件(内核),它控制计算机硬件资源,提供程序运行环境.内核的接口被称为系统调用.公用函数库构建在系统调用接口之上,应用软件即可使用公用函数库,也可使用系统调用.shell是一种特殊的应用程序,它为运行其他应用程序提供了一个接口 从广义上,操作系统包括了内核和一些其他软件,这些软件使得计算机能够发挥作用,并给予计算机以独有的特性(软件包括系统实用程序,应用软件,shell以及公用函数库等) 1.3  shell shell是一个命令行解

Linux 程序设计学习笔记----终端及串口编程基础之概念详解

转载请注明出处,谢谢! linux下的终端及串口的相关概念有: tty,控制台,虚拟终端,串口,console(控制台终端)详解 部分内容整理于网络. 终端/控制台 终端和控制台都不是个人电脑的概念,而是多人共用的小型中型大型计算机上的概念. 1.终端 一台主机,连很多终端,终端为主机提供了人机接口,每个人都通过终端使用主机的资源. 终端有字符哑终端和图形终端两种. 控制台是另一种人机接口, 不通过终端与主机相连, 而是通过显示卡-显示器和键盘接口分别与主机相连, 这是人控制主机的第一人机接口.

nodejs学习笔记_nodejs和PHP在基础架构上的差别--共享状态的并发

绝大多数对于Node.js的讨论都把关注点放在了处理高并发能力上,做开发的时候一定要明确node内部做出的权衡,以及node应用性能好的原因. node 为javascript引入了一个复杂的概念,:共享状态的并发. node採用一个长期执行的进程 而php在apache中会产生多个进程 例如以下图所看到的: 代码验证: PHP: <?php $i = 0; $i++; echo $i nodejs: var http = require('http'); var i=0; http.creat

Swift学习笔记(一):基础

一.常量 & 变量 //常量 let constantsTeam = 1 //变量 var variablesTeam = 2 尽可能使用常量,这样更清晰并且内存更不容易肾亏. 二.显示/隐式指定类型 //隐式 let inferredTeam = 3 //显式 let explicitTeam:Int = 4 三.字符串输出 //通过\(变量或常量名)来引用组合字符串 println("\(inferredTeam) is bigger than \(variablesTeam)!&q

Node.js学习笔记【3】NodeJS基础、代码的组织和部署、文件操作、网络操作、进程管理、异步编程

一.表 学生表 CREATE TABLE `t_student` ( `stuNum` int(11) NOT NULL auto_increment, `stuName` varchar(20) default NULL, `birthday` date default NULL, PRIMARY KEY  (`stuNum`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 学生分数表 CREATE TABLE `t_stu_score` ( `id` int(11

nodejs学习笔记_nodejs和PHP在基础架构上的区别--共享状态的并发

绝大多数对于Node.js的讨论都把关注点放在了处理高并发能力上,做开发的时候一定要明白node内部做出的权衡,以及node应用性能好的原因. node 为javascript引入了一个复杂的概念,:共享状态的并发. node采用一个长期运行的进程 而php在apache中会产生多个进程 如下图所示: 代码验证: PHP: <?php $i = 0; $i++; echo $i nodejs: var http = require('http'); var i=0; http.createSer

Murano Weekly Meeting 2015.07.21

会议时间: 2015.07.21 主持人: Kirill Zaitsev, core from Mirantis 会议摘要:  1.murano client和murano dashboard升级到yaql1.0.    slagun负责与mistral协调yaql1.0的升级问题,mistral需要一起升级. 2.OpenStack各个项目与olso的接口人. Project Liaison IRC Handle Cinder Jay Bryant jungleboyj Heat Thomas