【学习笔记】C# 封装和继承

  • 封装

    • 封装是实现面向对象程序设计的第一步
    • 封装就是将数据、方法等集合在一个个单元中,我们称之为类
    • 封装的意义在于保护代码/数据,屏蔽复杂性
  • 继承
    • 继承是所有面向对象语言不可缺少的部分
    • 继承是为了实现类的重用和扩展
    • 被继承的类叫做基类,或者父类。 继承于基类的叫做派生类,或者子类。
    • 在C#中,只支持单继承,子类只能有一个父类
    • 父类具有的特性,子类同样具有,继承可以传递
  •   示例
  •  1 using System;
     2 namespace ObjectFeatureDemo
     3 {
     4     public class Refrigerator
     5     {
     6         //封装是面向对象编程的第一步
     7         //把方法进行封装,创建了类
     8         public void Open()
     9         {
    10             Console.WriteLine("打开");
    11         }
    12         public void Close()
    13         {
    14             Console.WriteLine("关闭");
    15         }
    16
    17     }
    18
    19     //如果我们创建的类,没有指定父类,默认都是继承自Object
    20     public class Person
    21     {
    22         public string name;
    23         public int age;
    24
    25         public void Say(string str)
    26         {
    27             Console.WriteLine(str);
    28         }
    29     }
    30     //继承 - 一个类可以继承于另外一个类
    31     //被继承的类叫做父类,或者基类
    32     //继承的类叫做子类,或者派生类
    33
    34     //继承可以进行功能扩展,实现重用
    35     //C# 只支持单继续,一个子类只能有一个父类
    36     public class Student : Person
    37     {
    38         public int num; //学号
    39         public void GoToClass()
    40         {
    41             Console.WriteLine("去上课");
    42         }
    43     }
    44     class Program
    45     {
    46         static void Main(string[] args)
    47         {
    48             Refrigerator r = new Refrigerator();
    49             //封装能够保护代码、数据安全性
    50             r.Open();
    51             //封装可以屏蔽复杂性
    52
    53
    54             //继承
    55             Person p = new Person();
    56             p.name = "Li";
    57             p.age = 20;
    58             p.Say("I am OK!");
    59
    60             Student s = new Student();
    61             s.name = "LiL";
    62             s.age = 12;
    63             s.num = 100001;
    64             s.GoToClass();
    65         }
    66     }
    67 }
时间: 2024-11-05 05:01:14

【学习笔记】C# 封装和继承的相关文章

C++ Primer 学习笔记_69_面向对象编程 --继承情况下的类作用域

面向对象编程 --继承情况下的类作用域 引言: 在继承情况下,派生类的作用域嵌套在基类作用域中:如果不能在派生类作用域中确定名字,就在外围基类作用域中查找该名字的定义. 正是这种类作用域的层次嵌套使我们能够直接访问基类的成员,就好像这些成员是派生类成员一样: Bulk_item bulk; cout << bulk.book() << endl; 名字book的使用将这样确定[先派生->后基类]: 1)bulk是Bulk_item类对象,在Bulk_item类中查找,找不到名

MiZ702学习笔记12&mdash;&mdash;封装一个普通的VGA IP

还记得<MiZ702学习笔记(番外篇)--纯PL VGA驱动>这篇文章中,用verilog写了一个VGA驱动.我们今天要介绍的就是将这个工程打包成一个普通的IP,目的是为后面的一篇文章做个铺垫. 打包成一个普通的IP的目的,可以直接将这个IP粘贴到Block文件中.(和用文本实例化是一个意思).应为我们调用zynq的核的时候一般是用Block的形式,为了zynq和我们的VGA模块更方便的组织起来,就需要这种IP打包方式. 为什么是强调是普通的IP,这个主意是区分带AXI接口的IP,这个在后面介

Java泛型学习笔记 - (六)泛型的继承

在学习继承的时候, 我们已经知道可以将一个子类的对象赋值给其父类的对象, 也就是父类引用指向子类对象, 如: 1 Object obj = new Integer(10); 这其实就是面向对象编程中的is-a关系. 既然上面的代码正确, 那么在泛型中, 也可以使用如下代码: 1 public class Box<T> { 2 private T obj; 3 4 public Box() {} 5 6 public T getObj() { 7 return obj; 8 } 9 10 pub

Libgdx学习笔记:封装自己的Actor

为什么要去封装我们自己的Actor? 答:Actor本身可能无法满足我们的开发需求,或者无法支持各种各样的效果,由此需要在其基础上进行拓展. 下面贴出本人二次封装的CHActor代码,供大家参考:   1.CHActor使用了对象缓存池,自动管理释放,很好的解决了游戏中使用大量对象导致帧数较低的问题.    2.自行设置绘制的纹理,而不必使用Image.创建过多的Image会导致帧数下降的很厉害.   3.可自由继承CHActor,方便自己再次扩展. 用法: CHActor chactor  =

JavaSE 学习笔记之封装(四)

封 装(面向对象特征之一):是指隐藏对象的属性和实现细节,仅对外提供公共访问方式. 好处:将变化隔离:便于使用:提高重用性:安全性. 封装原则:将不需要对外提供的内容都隐藏起来,把属性都隐藏,提供公共方法对其访问. 封装是为了解决数据的安全性 继承是为了解决代码的重用性 多态是为了解决代码的扩展性 this:代表对象.就是所在函数所属对象的引用. this到底代表什么呢?哪个对象调用了this所在的函数,this就代表哪个对象,就是哪个对象的引用. 开发时,什么时候使用this呢? 在定义功能时

学习笔记 Java_静态_继承 2014.7.12

一.静态 1.构造函数: 特点: 1. 函数名和类名同样. 2. 不用定义返回值类型(和void不是一回事,而构造函数是根本不用定义返回值类型). 3. 不能够写return语句. 对象一建立就会调用与之相应的构造函数. 构造函数的作用:能够用于给对象进行初始化.(我们现实生活中的事物,仅仅要一出现就具备的特性. 比方:人一出生就会哭,一初始化就会哭,哭就是这个人的行为) 构造函数的小细节: 1.当一个类中未定义构造函数时,那么系统会默认给该类增加一个空參数的构造函数. 2.当在类中自己定义了构

疯狂Java学习笔记(83)----------继承详解

有一段时间没有更新博客了,感觉挺愧疚的,这两天忙着考试,实在没有办法,只能放一放了,还好自己复习的还不错,闲的没事,跟两篇博文,来能弥补一下空虚! 言归正传! 什么是继承? 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可. 多个类可以称为子类,单独这个类称为父类.超类或者基类. 子类可以直接访问父类中的非私有的属性和行为. 通过 extends 关键字让类与类之间产生继承关系. class SubDemo extends Dem

JavaScript学习笔记(三)—— 继承的实现

一.JavaScript实现继承的三层含义:   ① 子类的实例可以共享父类的方法: ② 子类可以覆盖父类的方法或者扩展新的方法: ③ 子类和父类都是子类的实例. 二.实现继承的几种方法: 1.原型链继承 例:function Box( ){           //被继承的函数叫超(父)类型: this.name = “Andy”; } function Desk( ){           //继承的函数叫子类型 this.age = 25; } Desk.prototype = new B

JavaScript学习笔记(散)——继承、构造函数super

构造函数中的super 今天看<JavaScript设计模式与开发实践>时,在书中看到一段代码出现super语句,第一次看到这个关键字,所以上网查了下它的作用,发现这个关键字是来自java,来源不深究,说说它的用途.super主要作用是调用父级的构造函数,但是困惑的是既然是构造函数,说明在声明的时候已经调用了,为什么会出现super来调用?自己敲了段代码加深了理解,上图: 这里创建了一个animal类,包含一个构造函数 接下来创建animal的子类Dog,含有一个speak函数(用于理解继承)

《objective-c基础教程》学习笔记(五)—— 继承方法

在上一篇博文中,我们将原先的纯C语言代码,编写成了用Objective-C(后面直接缩写成OC)的写法.使得代码在易读性上有明显提升,结构也更清晰.同时,也对面向对象的概念有了进一步的介绍和加深. 但是,通过上一个例子,我们发现代码的冗余还是很大.像Circle,Rectangle和Egg的定义和实现方法几乎代码都是基本相同,只有个别地方不同.那么,有什么好方法来优化这些代码呢?今天这篇博文的重点就是要介绍继承这个方法,它将会有效的解决上面说的这个问题. 正如你从亲生父母那里继承一些特性(头发的