1.C#.Net面向对象基础知识点
1.继续面向对象
面向对象的三大特征:
封装、继承、多态
封装:隐蔽代码实现,代码复用,修改方便。
继承:
多态:
2.什么是类?什么是对象?类和对象的区别?
类是一种数据类型,用户自定义的数据类型。 是针对具体存在的一种描述。
类的组成:字段,属性,方法,构造函数。
对象是具体的。是类的具体实例。对象具有属性和方法。 按照类的描述来创建一个可供我们使用的实例。
类只占一块内存,每个对象单独占用一块内存。 对象可以叫做类的实例(Instance)
3.构造函数的作用?
主要是为了方便程序员在实例化(new)对象的时候就为对象里的一些属性字段初始化赋值。
<--构造函数-->
(1)访问修饰符一般情况下是public
(2)没有返回值类型
(3)方法名和类名相同
(4)在该类被new的时候(实例化)调用
(5)用户自定义的类中,如果没有用户定义的任何一个构造函数。那么CLR将在程序运行的时候自动添加一个无参的构造函数给对象
也就是说:一旦用户自定义的类中包含了一个或多个构造函数(不管有没有参数的),那么CLR将不在自动添加。
4.属性
属性的本质就是两个方法,get和set。
属性就是为了设置访问和修改成员变量值的规则。
如果属性里只定义了get代码块,则该属性叫做只读属性。
如果属性里只定义了set代码块。则该属性叫做只写属性。
代码:
public class Person
{
private string _name;
public string Name
{
get{return _name;}
set{_name=value;}
}
private int _age;//属性存在的目的就是为了设置访问和修改成员变量值的规则。
public int Age
{
get{return _age;}
set
{
if(value>=0&& value<=120)
{
_age=value;
}
else
{
_age=18;
}
}
}
}
5.GC垃圾回收器
垃圾回收器定时检查堆内存,一旦发现没有被引用的对象,就立即销毁它。
6.静态成员
CLR加载程序集里的类信息,发现有静态成员,则直接添加到[静态成员表]中,整个程序集内都可以访问这个表里的静态成员。
7.里氏替换原则
当存在继承关系时,如果声明的是父类,则堆中对象保存的类型指针为父类,那么调用的时候就会执行父类的成员。
如果调用的成员,父类中没有,那么程序会报错。因为父类的类型指针只会去找父类的成员,找不到,没有,就会报错。
8.继承
(1)、因为子类继承了父类,所以子类对象能够调用父类对象里所有的非私有成员。
(2)、当存在继承关系的时候,子类的this同时可以指向父类的非私有成员。base就存在于子类对象里,用来指向父类的指针。
(3)、继承的单根性:一个类只能继承一个父类。
传递性:子类获得父类所有的非私有成员。
(4)、子类默认调用父类无参的构造函数
(5)、类的访问修饰符默认就是internal,(程序集内共享,也就是项目内部共享)
类的成员变量,访问修饰符默认是private
(6)、不能将父类对象强制转换成子类对象
(7)、当创建一个子类对象的时候,如果声明的是父类对象,那么只能调用父类中的方法。
当创建一个子类对象的时候,如果声明的是子类对象,那么先看子类中的方法,有则调用,没有则去父类中寻找,如果有则调用。
9.简单工厂方法
最关键的是应用了里氏替换原则,及子类重写父类的技术,它能让代码开发者不关心某个具体相关业务的实现,而只关心自己要实现的业务代码的编号。
10.多态
多态就是用某个子类来实例化父类,调用父类的抽象方法或者虚方法,但实际上执行的是子类实例重写的方法。
转载于:https://blog.51cto.com/net5x/1584822
1.C#.Net面向对象基础知识点相关推荐
- 计算机知识必备,小结||计算机基础知识点十(必备)
原标题:小结||计算机基础知识点十(必备) 451.数据库管理系统主要功能: (1)数据定义功能 (2)数据操纵功能 (3)数据库的运行管理 (4)数据库的建立和维护功能 452.数据库不仅要反映数据 ...
- python 注释一段话_干货!Python入门基础知识点总结
或看好Python的广阔前景,或看中Python的语法简洁,越来越多零基础的人选择学Python.但是Python基础知识有哪些呢?且看我的分析. Python部分基础知识点汇总 数据类型:编程中操作 ...
- java重要基础知识点_java基础知识点整理
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 java基础知识点整理1.&和&&的区别? &:逻辑与(and),运算符两边的表达式均为true时,整个结果才为true. ...
- 程序设计语言基础-知识点
程序设计语言基础-知识点 程序设计语言就是人类跟计算机沟通的语言 分类 1.高级低级之分 高级 c/c++,java 等 低级 机器语言 汇编等 2.工作方式之分 编译程序:编译成目标程序后再执行.c ...
- 百度 java基础_java基础知识点整理
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 java基础知识点整理1.&和&&的区别? &:逻辑与(and),运算符两边的表达式均为true时,整个结果才为true. ...
- java基础教程知识点,[Java教程]js基础知识点总结
[Java教程]js基础知识点总结 0 2016-11-01 21:00:04 如何在一个网站或者一个页面,去书写你的js代码: 1.js的分层(功能):jquery(tool) 组件(ui) 应用( ...
- java基础知识点(1)——计算机的基础-计算机语言
和小学妹一起学java java的基础知识 学科介绍 一.计算机的基础知识 1.计算机基础 2.编程语言 3.进制 4.字节 5.命令行的交互 二.Java语言概述 1.Java语言的简介 2.跨平台 ...
- java三次登录锁定_Java基础知识点有哪些 如何快速步入Java行业
Java基础知识点有哪些?如何快速步入Java行业?作为目前应用最广泛的编程语言之一,Java吸引了大量的人学习加入.Java编程是一门面向对象编程语言,具有简单易用.功能强大的特点,是目前互联网行业 ...
- python describe函数_Python基础知识点梳理2,推荐收藏
接着昨天的基础知识点继续梳理,昨天的 Python基础知识梳理1 8.函数 1.定义函数: 使用关键字def来告诉python你要定义一个函数 接着指出函数名:如下面函数名是-greet_user ( ...
最新文章
- Generation Language GL
- C/C++在Android开发中的应用
- C语言中函数如何返回结构体?
- 为什么多个线程不可能同时抢到一把锁_分布式为什么一定要有高可用的分布式锁?看完就知道了...
- SpringBatch 多线程(TaskExecutor)启动Job详解 (七)
- [转]Mogre 环境配置问题(Exception from HRESULT: 0x800736B1)
- Yii2的MVC新特性
- 数据结构与算法--图论-深度优先搜索及其应用
- 为ESXI 添加ISCSI存储设备 Linux服务器系统
- 点击图片添加文件在Chrome中使用的兼容问题
- ES6学习笔记二 新的声明方式和变量的解构赋值!
- Ubuntu系统(四)-修改主机名和配置DNS上网
- COCOS2D-X编译成android的项目
- CC1101魔幻的收发切换机制
- MYSQL生成日历表,通常在做报表的时候需要用来生成一个临时表,用来左连接等。...
- 基于cat12搞定VBM的ROI分析——vertex水平和ROI水平的双样本T检验
- 利用docker maven镜像打包springboot
- 什么是零信任?零信任的好处有哪些?
- 多文件自平衡云传输(三)节点选择和资源分配 —————— 开开开山怪
- 亚马逊AWS使用计费问题
热门文章
- 出现梯度消失与梯度爆炸的原因以及解决方案
- Mybatis异常There is no getter for property named ‘XXX‘ in ‘class java.lang.String‘
- 如何在Mongoose中更新/更新文档?
- Windows linux子系统安装mysql
- win11打开应用被管理员阻止怎么办 window11管理员已阻止你运行此应用的解决方法
- myBatis的xml映射文件中传入list集合与数组做条件
- windows安装docker后启动报错无法下载镜像文件Error with pre-create check: “Get https://github-production-release-ass
- SpringMVC控制类的Controller方法返回值
- c++ string 长度限制_面试中要会的String相关问题
- 圆弧构型机器人轮直径校准