面向对象
又要开始今天的知识点储备了。。。
简单讲讲面向对象、构造函数和里氏转换0.0
面向对象 这个东西其实很好理解,先说说什么是面向对象,对于程序猿来说,万物皆对象ヽ(ー_ー)ノ哈哈哈…
虽然这样说真的很抽象,但是不得不说,对象这个东西真的也是让好多人新手很头痛,不知道他到底该怎么理解,下面就是我对他的解释:
面向对象 |
---|
是一种抽象的程序设计思想 |
先有面向这个对象的过程,再有的面向对象 |
而且
他也有很多优点:
- 具有更高的灵活性
- 重用性
- 扩展性
当然
我也知道这么说实在是太抽象了,所以我准备举个小栗子(●—●)
好比如说,咱们身边有很多的物品,随便说一样吧,如:杯子,鼠标,纸巾什么的(σ゚∀゚)σ…:*☆哎哟不错哦
先把杯子拿出来开刀吧o((⊙﹏⊙))o
杯子有什么价值?用途是什么?
杯子有他的价格,重量,材质,配色什么的一堆堆的…这是个是他的价值对吧,那接下来就是它是用来干什么的,和杯子要被使用的对象是谁?这个就是对象的一种解释。
下面是个代码似的解释:
杯子{有什么?:价格,重量,材质,配色等等…用途?只能是被使用(参数:用的对象是谁?){}}
还有
对象是设计一种思想,是对现实或想象的单位映射 Σσ(・Д・;)我我我什么都没做!!!
接下来
构造函数
首先提一个疑问?什么是构造函数?
答案就是:构造对象使用的方法。
作用:
- 构造类的方法(在创建对象时)
- 创建对象的时候会调用构造函数
- 创建对象,作用是初始化类的成员
- 存在一个默认无参构造函数
- 只要写了构造函数,就可以替代默认构造函数
记住
很重要的!一定是先调用父类在调用子类的构造函数
还有就是:
- 1.无参的构造函数调用时看不见
- 2.Base只能调用父类的公开成员,受保护的,internal内部的
- 3.protected internal 受保护的内部的
- 4.internal 只能本程序及访问,添加引用都不可以
- 5.protected 不可以作为类的访问修饰符,子类可以访问父类受保护成员,其他人 一概不行
- 6.protected internal 只能本程序及的父子类,可以使用,其他人一概不许 创造子类对象必须调用父类的构造函数 Base在子类 调用父类构造函数时,把参数一并传给父类
重点来了!!!
里氏转换(is as)
is主要是用来判断类型
as代表他是什么类型
他的原则是什么呢?标准答案嗷:所有基类可以出现的地方,子类一定出现
还有就是必须是有继承关系这是实现里氏转换的前提
子类类型的子类对象,可以转换为父类类型。
override重写方法,不管是子类对象还是子类对象转换成父类类型时,所调用的方法都是子类的 。
一开始声明的类型
new关键字,子类对象如果转换成父类类型所调用的方法,根据New关键字无法覆盖。类型决定调用方法