C#:在继承的子类中初始化基类字段,并访问基类字段,方法

一.基类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Inherit
{
    public class Person
    {
        private string _name;
        private int _age;
        private int _height;
        private string _gender;
        private string _worker; //职业

        public Person(string name, int age, int height, string gender, string worker)
        {
            _name = name;
            _age = age;
            _height = height;
            _gender = gender;
            _worker = worker;
        }

        public void getPersonInfo()
        {
            Console.WriteLine("姓名:{0}", _name);
            Console.WriteLine("年龄:{0}", _age);
            Console.WriteLine("身高:{0}", _height);
            Console.WriteLine("性别:{0}", _gender);
            Console.WriteLine("职业:{0}", _worker);

        }
    }
}

二.继承类(1)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Inherit
{
    public class Student:Person
    {
        private int  _averageScore;       //平均分数

        public Student(int averageScore, string name, int age, int height, string gender, string worker)
            : base(name, age, height, gender, worker)
        {
            _averageScore = averageScore;

        }

        //new为了隐藏基类中的getPersonInfo()
        public new void  getPersonInfo()
        {
            base.getPersonInfo();
            Console.WriteLine("平均分数:{0}分", _averageScore);

        }
    }
}

三.继承类(2)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Inherit
{
    class Worker:Person
    {
        private decimal _monthlySalary;  //月薪

        public Worker(decimal monthlySalary, string name, int age, int height, string gender, string worker)
            : base(name, age, height, gender, worker)
        {
            _monthlySalary = monthlySalary;
        }

        //new为了隐藏基类中的getPersonInfo()
        public new void getPersonInfo(){
            base.getPersonInfo();
            Console.WriteLine("月薪:{0}元", _monthlySalary);
        }
    }
}

四.调用

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Inherit
{
    class Program
    {
        static void Main(string[] args)
        {
            Student s = new Student(650, "小明", 23, 175, "男", "学生");
            s.getPersonInfo();
            Console.WriteLine("/************************************************/");
            Worker w = new Worker(8000, "小红", 24, 165, "女", "白领");
            w.getPersonInfo();
            Console.ReadKey();
        }
    }
}

五.打印结果

原文地址:https://www.cnblogs.com/QingYiShouJiuRen/p/11079277.html

时间: 2024-11-06 13:09:48

C#:在继承的子类中初始化基类字段,并访问基类字段,方法的相关文章

继承的作用以及在子类中初始化所有数据的方法

1.方便扩充程序,使之不必重写整个程序 代码示例 1 #include <iostream> 2 #include <string> 3 using namespace std; 4 class father 5 { 6 protected: 7 string name; 8 int tall; 9 public: 10 father(string a, int i); 11 father(){ cout << "构造基类\n"; } 12 void

JavaSE8基础 子类中所有的构造方法默认访问父类中无参构造方法

os :windows7 x64    jdk:jdk-8u131-windows-x64    ide:Eclipse Oxygen Release (4.7.0)        代码: /*默认的:子类中所有的构造方法默认都会访问父类中无参构造方法*/ //父类 class Father { //无参构造函数 public Father() { System.out.println("父类无参构造函数"); } //有参构造函数 public Father(int num) { S

绑定与非绑定方法 继承 继承与抽象 查找属性关系 派生与覆盖 访问父类的内容

类属性与对象属性 类中应该仅存储所有对象共有的内容 如所有人的国籍相同那就放到类中 对象中存储每个对象独有的内容 ? 如每个人的名字都不同 初始化函数class Person: color = 'white' def read(self): print('hamlet') # 创建对象 也称之为实例化 产生的对象也称之为实例a1=Person()print(a1)print(a1.color)print(a1.__dict__) a2 = Person()print(a2)print(a2.re

3.Java继承中父类与子类的初始化顺序

在 Java 编程语言中,对象的初始化是非常结构化的,这样做是为了保证安全.在前面的模块中,看到了当一个特定对象被创建时发生了什么.由于继承性,对象被完成,而且下述行为按顺序发生: 存储空间被分配并初始化到 0 值 进行显式初始化 调用构造方法 层次中的每个类都会发生最后两个步骤,是从最上层开始. Java 技术安全模式要求在子类执行任何东西之前,描述父类的一个对象的各个方面都必须初始化.因此,Java 编程语言总是在执行子构造方法前调用父类构造方法的版本.有继承的类在运行的时候,一定要记得:初

继承的基本概念: (1)Java不支持多继承,也就是说子类至多只能有一个父类。 (2)子类继承了其父类中不是私有的成员变量和成员方法,作为自己的成员变量和方法。 (3)子类中定义的成员变量和父类中定义的成员变量相同时,则父类中的成员变量不能被继承。 (4)子类中定义的成员方法,并且这个方法的名字返回类型,以及参数个数和类型与父类的某个成员方法完全相同,则父类的成员方法不能被继承。 分析以上程

继承的基本概念: (1)Java不支持多继承,也就是说子类至多只能有一个父类. (2)子类继承了其父类中不是私有的成员变量和成员方法,作为自己的成员变量和方法.(3)子类中定义的成员变量和父类中定义的成员变量相同时,则父类中的成员变量不能被继承.(4)子类中定义的成员方法,并且这个方法的名字返回类型,以及参数个数和类型与父类的某个成员方法完全相同,则父类的成员方法不能被继承. 分析以上程序示例,主要疑惑点是“子类继承父类的成员变量,父类对象是否会实例化?私有成员变量是否会被继承?被继承的成员变量

继承实现的原理、子类中调用父类的方法、封装

一.继承实现的原来 1.继承顺序 Python的类可以继承多个类.继承多个类的时候,其属性的寻找的方法有两种,分别是深度优先和广度优先. 如下的结构,新式类和经典类的属性查找顺序都一致.顺序为D--->A--->E--->B--->C. class E: def test(self): print('from E') class A(E): def test(self): print('from A') class B: def test(self): print('from B'

不存在继承关系各类中、不存在对象引用的对象创建初始化顺序

实例3 class One   {        One(String str)      {        System.out.println(str);       }    } class Two   {       One one_1 = new One("one-1");       One one_2 = new One("one-2");       One one_3 = new One("one-3");      Two(S

Day17:继承实现的原理、子类中调用父类的方法、封装

一.继承实现的原来 1.继承顺序 Python的类可以继承多个类.继承多个类的时候,其属性的寻找的方法有两种,分别是深度优先和广度优先. 如下的结构,新式类和经典类的属性查找顺序都一致.顺序为D--->A--->E--->B--->C. class E: def test(self): print('from E') class A(E): def test(self): print('from A') class B: def test(self): print('from B'

python之子类继承父类时进行初始化的一些问题

直接看代码: class Person: def __init__(self): self.name = "jack" class Student(Person): def __init__(self): self.school = "一中" stu = Student() print("学生的姓名是:",stu.name) 此时,程序是不能正常运行的,运行之后报错: 这是为什么呢? __init__相当于是python类的构造方法,在类进行实例