zoukankan      html  css  js  c++  java
  • Net基础篇_学习笔记_第十二天_面向对象继承(父类和子类)

    继承

    我们可能会在一些类中,写一些重复的成员,我们可以将这些重复的成员,
    单独的封装到一个类中,作为这些类的父类。
    Student、Teacher、Driver 子类  派生类
    Person                               父类  基类
    子类继承了父类,那么子类从父类那里继承过来了什么?
    首先,子类继承了父类的属性和方法,但是子类并没有继承父类的私有字段
    问题:子类有没有继承父类的构造函数?
    答:子类并没有继承父类的构造函数,但是。子类会默认的调用父类无参数的构造函数,
    创建父类对象,让子类可以使用父类中的成员。
    所以,如果在父类中重新写了一个有参数的构造函数之后,那个无参数的就被干掉了,
    子类就调用不到了,所以子类会报错。
    解决办法:
    1)、在父类中重新写一个无参数的构造函数。
    2)、在子类中显示的调用父类的构造函数,使用关键字:base()

    继承的特性
    1、继承的单根性:一个子类只能有一个父类。
    2、继承的传递性

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.Threading.Tasks;
     6 
     7 namespace ConsoleApplication3
     8 {
     9     class Program
    10     {
    11         static void Main(string[] args)
    12         {
    13             Student s = new Student();
    14             s.CHLSS();
    15             s.Age = 58;
    16             s.Name = "李阳";
    17             Console.WriteLine("{0}是{1}岁了", s.Name, s.Age);
    18             Console.ReadKey();
    19         }
    20     }
    21     public class Person
    22     {
    23         private string _name;
    24         public string Name
    25         {
    26             get { return _name; }
    27             set { _name = value; }
    28         }
    29         private int _age;
    30         public int Age
    31         {
    32             get { return _age; }
    33             set { _age = value; }
    34         }
    35         public char _gender;
    36         public char Gender
    37         {
    38             get { return _gender; }
    39             set { _gender = value; }
    40         }
    41         public void CHLSS()
    42         {
    43             Console.WriteLine("吃喝拉撒睡");
    44         }
    45         public Person(string name, int age, char gender)//构造函数
    46         {
    47             this.Name = name;
    48             this.Age = age;
    49             this.Gender = gender;
    50         }
    51         //public Person()
    52         //{
    53 
    54         //}
    55 
    56 
    57     }
    58     public class Student : Person
    59     {
    60         private int _id;
    61         public int Id
    62         {
    63             get { return _id; }
    64             set { _id = value; }
    65         }
    66         public void study()
    67         {
    68             Console.WriteLine("好好学习,天天向上");
    69         }
    70         public Student(string name, int age, char gender, int id) : base(name, age, gender)
    71         {
    72             this.Id = id;
    73         }
    74        
    75 
    76     }
    77     public class Teacher : Person
    78     {
    79         private int _id;
    80         public int Id
    81         {
    82             get { return _id; }
    83             set { _id = value; }
    84         }
    85         public void Teach()
    86         {
    87             Console.WriteLine("教育学生");
    88         }
    89         public Teacher(string name, int age, char gender, int id) : base(name, age, gender)
    90         {
    91             this.Id = id;
    92         }
    93     }
    94 }
  • 相关阅读:
    MySQL 使用 ON UPDATE CURRENT_TIMESTAMP 自动更新 timestamp (转)
    MySQL数据类型:UNSIGNED注意事项(转)
    MySQL慢查询参数
    elasticsearch中mapping的_source和store的笔记(转)
    python 使用 elasticsearch 常用方法(聚合)
    python 使用 elasticsearch 常用方法(检索)
    python 使用 elasticsearch 常用方法(索引)
    ElasticSearch集群状态查看命令大全(转)
    用C#实现修改网页数据
    基于jQuery可悬停控制图片轮播代码
  • 原文地址:https://www.cnblogs.com/NBOWeb/p/7644068.html
Copyright © 2011-2022 走看看