请选择 进入手机版 | 继续访问电脑版

我爱科技论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 240|回复: 0

[免费教程] 【C#进阶】C#中面向对象编程三个关键字的复习

[复制链接]

696

主题

743

帖子

7691

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
7691

最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

发表于 2018-1-23 20:04:02 | 显示全部楼层 |阅读模式
1.1 new 关键字的作用
-----》在堆中开辟空间
-----》在开辟的堆空间中创建对象
-----》调用对象的构造函数

  1. ①        如何阻止构造函数的初始化?(解决之道:构造函数的私有化)
  2. //构造函数( 对自动生成属性的保护)
  3.         private Object(char gender)
  4.         {
  5.             if (gender != '男' && gender != '女')
  6.             {
  7.                 this.Gender = 's';
  8.             }
  9.             this.Gender = gender;
  10.   }
  11. ②        如何隐藏父类的成员?
  12. public class Person
  13.     {
  14.         public void sayHello()
  15.         {
  16.             Console.WriteLine("父类的");
  17.         }
  18.     }
  19.     class Student : Person
  20.     {
  21.         public new void sayHello()  //彻底隐藏了父类的sayHello()方法
  22.         {
  23.             Console.WriteLine("子类的");
  24.         }
  25.     }
复制代码
1.2  this关键字

  1. ①        this指代的是当前对象
  2. //函数
  3.         public void Test()
  4.         {
  5.             //在函数内部局部变量的优先级要高于成员变量
  6.             string Name = "ABC";
  7.             Console.WriteLine(Name);  //局部变量
  8.             Console.WriteLine(this.Name);  //全局变量
  9.         }
  10. ②        显示地调用自己的构造函数
  11. 案例一:如果直接创建两个构造函数,相同的代码会产生代码冗余现象
  12. //构造函数
  13.         public Teacher(string name, string age, char gender, int chinses, int math, int english)
  14.         {
  15.             Name = name;
  16.             Age = age;
  17.             Gender = gender;
  18.             Chinses = chinses;
  19.             Math = math;
  20.             English = english;
  21.         }

  22.         //构造函数2(Ctrl+K+D 自动对齐)
  23.         public Teacher(string name, string age, char gender)
  24.         {
  25.             this.Name = name;
  26.             this.Age = age;
  27.             this.Gender = gender;
  28.         }
  29. 解决之道:
  30. //:this()表示调用子类(也就是调用自己的构造函数)
  31.         //构造函数
  32.         public Teacher(string name, string age, char gender, int chinses, int math, int english)
  33.         {
  34.             Name = name;
  35.             Age = age;
  36.             Gender = gender;
  37.             Chinses = chinses;
  38.             Math = math;
  39.             English = english;
  40.         }

  41.         //构造函数2(Ctrl+K+D 自动对齐)  ---会产生代码的冗余
  42.        /* public Teacher(string name, string age, char gender)
  43.         {
  44.             this.Name = name;
  45.             this.Age = age;
  46.             this.Gender = gender;
  47.         }*/



  48.         //:this()表示调用子类(也就是调用自己的构造函数)
  49.         public Teacher(string name, string age, char gender) : this(name, age, gender, 0, 0, 0)
  50.         {

  51.         }

  52.         //只用来显示我的分数情况
  53.         public Teacher(string name, int chinese, int math, int english) : this(name, "0", '0', chinese, math, english)
  54.         {

  55.         }
  56. //实例化一个对象
  57.             //会自动调用我的那个默认的构造函数
  58.             Teacher t = new Teacher("AAA", "Male", '1', 50, 60, 10);
  59.             t.sayHi();
  60.             t.ShowScore();

  61.             //会自动调用第二个构造函数
  62.             Teacher t2 = new Teacher("BBB", "FeMale", '1');
  63.             t2.sayHi();

  64.             //会自动调用第三个构造函数
  65.             Teacher t3 = new Teacher("DDD", 88, 66, 55);
  66.             t3.ShowScore();
复制代码
1.3 base关键字
  1. ① 显示调用父类的构造函数
  2. //this和base的使用
  3.         public Student GetStudent()
  4.         {
  5.             return this;
  6.         }

  7. ①    调用父类的成员
  8. public Person GetPerson()
  9.         {
  10.             //return base; //error:base仅仅是一个纸箱父类的引用罢了

  11.             //可以通过base强制调用父类的方法
  12.             base.sayHello();

  13.             return new Person();
  14.         }
复制代码






上一篇:中国社科院|浙江大学|厦门大学历年考研真题资料试卷
下一篇:编程开发英汉词典的必备字典库文件资料
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案; 如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

微信扫一扫

快速回复 返回顶部 返回列表