静态类和静态方法:静态成员是与类相关,而非实例相关;普通类中的静态成员:1.只能通过类名访问。2.静态方法中只能访问静态成员,或通过对象访问实例成员。3.多个对象共享同一个成员。静态类(一般用作工具类):1.Math,console等都是静态类。2.静态类中只能包含静态成员。注意:少使用静态类,静态类、静态成员所分配的内存在程序退出时才会释放。静态类的本质abstract(不能被实例化)+sealed(不能被继承)。

多态:多态就是指不同对象收到相同消息时,会产生不同行为,同一个类在不同的场合下表现出不同的行为特征。多态的作用:把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。实现多态的方式:virtual,abstract,接口。
 
抽象类:抽象类不能被实例化。抽象类中可以有普通成员。抽象类存在的意义:1.抽象类不能被实例化,只能被其他类继承2.继承抽象类的子类必须把抽象类中的所有抽象成员都重写(实现)(除非子类也是抽象类。)3.抽象类就是为了重写→多态(代码重用)。4.抽象类中可以有实例成员也可以有抽象成员。
 
抽象类的例子:计算形状Shape(圆Circle,矩形Square ,正方形Rectangle)的面积、周长。
class Program
{
#region 计算形状Shape(圆Circle,矩形Square?,正方形Rectangle)的面积、周长 #endregion
static void Main(string[] args)
{
Circle c = new Circle();
double circleArea = c.area();
Console.WriteLine(circleArea );
Square s = new Square(,);
double squareArea = s.area();
Console.WriteLine(squareArea);
Rectangle r = new Rectangle();
double rectangelArea = r.area();
Console.WriteLine(rectangelArea);
Console.ReadKey();
}
}
/// <summary>
/// 形状的抽象类
/// </summary>
public abstract class Shape
{
public abstract double area();
public abstract double circumference();
}
/// <summary>
/// 圆形类,继承自形状类,重写抽象方法
/// </summary>
public class Circle : Shape
{
public Circle(double radius)
{
this.radius = radius;
}
double radius; public double Radius
{
get { return radius; }
set { radius = value; }
}
public override double area()
{
return Math.PI * this.Radius * this.Radius;
} public override double circumference()
{
return * Math.PI * this.Radius;
}
}
/// <summary>
/// 矩形类,继承自形状类,重写抽象方法
/// </summary>
public class Square : Shape
{
public Square(double length, double width)
{
this.length = length;
this.width = width;
}
double length; public double Length
{
get { return length; }
set { length = value; }
}
double width; public double Width
{
get { return width; }
set { width = value; }
} public override double area()
{
return this.Width * this.Length;
} public override double circumference()
{
return * (this.Width + this.Length);
}
}
/// <summary>
/// 正方形类,继承自形状类,重写抽象方法
/// </summary>
public class Rectangle : Shape
{
public Rectangle(double l)
{
this.length = l;
}
double length; public double Length
{
get { return length; }
set { length = value; }
} public override double area()
{
return Length * Length;
} public override double circumference()
{
return * Length;
}
}

虚方法与抽象方法:

虚方法:

•1.父类中必须有实现。
•2.子类中可以不重写。
•3.虚方法可以在普通类中。(有序方法的类是可以(可能)被实例化的。)
抽象方法:
 
•1.父类中不能有任何实现。
•2.子类中必须重写(除非:子类也是一个抽象类。)
•3.抽象方法必须在抽象类中。
 
值类型与引用类型:值类型均隐式派生自System.ValueType:数值类型、bool、结构、枚举。引用类型派生自System.Object:字符串、数组、类、接口等。引用类型变量的赋值只复制对对象的引用。值类型变量赋值会拷贝一个副本。
 
接口:接口的例子:
class Program
{
#region 橡皮rubber鸭子、木wood鸭子、真实的鸭子realduck。三个鸭子都会游泳,而橡皮鸭子和真实的鸭子都会叫,只是叫声不一样,橡皮鸭子“唧唧”叫,真实地鸭子“嘎嘎”叫,木鸭子不会叫.把抽象类变成接口。 #endregion
static void Main(string[] args)
{
Ibark realduck = new RealDuck();
//realduck.bark();
Bark(realduck);
Console.ReadKey();
}
public static void Bark(Ibark bark)
{
bark.bark();
}
}
interface Ibark
{
void bark();
}
interface Iswim
{
void swim();
}
public class RubberDuck:Iswim ,Ibark
{ public void swim()
{
Console.WriteLine("橡皮鸭会游泳");
} public void bark()
{
Console.WriteLine("唧唧");
}
}
public class WoodDuck : Iswim
{ public void swim()
{
Console.WriteLine("我是木鸭,我只会游泳不会叫");
}
}
public class RealDuck : Iswim, Ibark
{ public void swim()
{
Console.WriteLine("我是真鸭子,我会游泳");
} public void bark()
{
Console.WriteLine("嘎嘎,我会叫");
}
}

接口特点总结:

1.接口是一种规范。为了多态。
2.接口不能被实例化。
3.接口中的成员不能加“访问修饰符”,接口中的成员访问修饰符为public,不能修改。(默认为public)
4.接口中的成员不能有任何实现。
5.接口中只能有方法、属性、索引器、事件,不能有“字段”。
6.接口与接口之间可以继承,并且可以多继承。
7.实现接口的子类必须实现该接口的全部成员。
8.一个类可以同时继承一个类并实现多个接口。
9.当一个抽象类实现接口的时候,如果不想把接口中的成员实现,可以把该成员实现为abstract。(抽象类也能实现接口,用abstrac标记)
10.“显示实现接口”,只能通过接口变量来调用(因为显示实现接口后成员为private)。

静态类和静态方法,抽象类和抽象方法,new关键字,值类型和引用类型,接口的更多相关文章

  1. C#类和接口、虚方法和抽象方法及值类型和引用类型的区别

    1.C#类和接口的区别接口是负责功能的定义,项目中通过接口来规范类,操作类以及抽象类的概念!而类是负责功能的具体实现!在类中也有抽象类的定义,抽象类与接口的区别在于:抽象类是一个不完全的类,类里面有抽 ...

  2. Docs-.NET-C#-指南-语言参考-关键字-值类型:可以 null 的值类型

    ylbtech-Docs-.NET-C#-指南-语言参考-关键字-值类型:可以 null 的值类型 1.返回顶部 1. Nullable value types (C# reference) 2019 ...

  3. Docs-.NET-C#-指南-语言参考-关键字-值类型:struct

    ylbtech-Docs-.NET-C#-指南-语言参考-关键字-值类型:struct 1.返回顶部 1. struct(C# 参考) 2015/07/20 struct 类型是一种值类型,通常用来封 ...

  4. Docs-.NET-C#-指南-语言参考-关键字-值类型:enum

    ylbtech-Docs-.NET-C#-指南-语言参考-关键字-值类型:enum 1.返回顶部 1. enum(C# 参考) 2015/07/20 enum 关键字用于声明枚举,一种包含一组被称为枚 ...

  5. Docs-.NET-C#-指南-语言参考-关键字-值类型:char

    ylbtech-Docs-.NET-C#-指南-语言参考-关键字-值类型:char 1.返回顶部 1. char(C# 参考) 2019/10/22 char 类型关键字是 .NET System.C ...

  6. Docs-.NET-C#-指南-语言参考-关键字-值类型:bool

    ylbtech-Docs-.NET-C#-指南-语言参考-关键字-值类型:bool 1.返回顶部 1. bool(C# 参考) 2015/07/20 bool 关键字是 System.Boolean  ...

  7. Docs-.NET-C#-指南-语言参考-关键字-值类型:内置数值转换

    ylbtech-Docs-.NET-C#-指南-语言参考-关键字-值类型:内置数值转换 1.返回顶部 1. 内置数值转换(C# 参考) 2019/10/22 C# 提供了一组整型和浮点数值类型. 任何 ...

  8. Docs-.NET-C#-指南-语言参考-关键字-值类型-:浮点数值类型

    ylbtech-Docs-.NET-C#-指南-语言参考-关键字-值类型-:浮点数值类型 1.返回顶部 1. 浮点数值类型(C# 引用) 2019/10/22 “浮点类型”是“简单类型”的子集,可以使 ...

  9. C#基础精华02(静态类,值类型,引用类型,枚举,结构,ref与out)

    静态类 静态类不能被其他类继承,静态成员亦不能被继承(访问的是同一个),备注1. 静态类只能继承自Object类.(静态类不能继承自其它类.) 继承(多态).静态本身就是相反的. 静态类不能实现任何接 ...

随机推荐

  1. JAVA反射机制o

    Reflection是Java 程序开发语言的特征之一,它允许运行中的 Java 程序对自身进行检查,或者说"自审",并能直接操作程序的内部属性.例如,使用它能获得 Java 类中 ...

  2. 咏南CS开发框架新的界面风格

    咏南CS开发框架新的界面风格 这种风格完全和WINDOWS桌面一样,符合用户的操作习惯. 我的桌面的图标和WINDOWS桌面一样分为二类:1)快捷方式  2)文件夹. 如果快捷方式较多,看得人眼花缭乱 ...

  3. [LeetCode 题解]: Partition List

    Given a linked list and a value x, partition it such that all nodes less than x come before nodes gr ...

  4. KVM虚拟机windows系统增加硬盘

    原文:http://www.ilanni.com/?p=6211 前一篇文章介绍了有关linux系统添加硬盘的方法,这次我们来介绍有关windows系统添加的相关步骤. 其实linux和windows ...

  5. vs2015上使用github进行版本控制

    我是用的是vs2015企业版 一.首先创建项目,右下角选择新建git存储库 二.在工具栏选择团队-管理连接,打开团队资源管理器,点击同步 . 三.选择下面的发布选项 四.在gitgub上新建仓库,得到 ...

  6. androidstudio提示adb错误:cannot parse version string:kg01的解决方法

    打开adb.exe的文件目录,同时按下shift和鼠标右键,打开cmd后运行一下这个命令adb kill-server

  7. 一起学习《C#高级编程》2--比较对象的相等性

    今后争取每两天能更新一次.平日的诱惑太多,双休只顾玩了,进度有点慢. 接上一讲的,类型的安全性,留下了点小尾巴——比较对象的相等性. C#有四种比较相等的方式:除了“==”运算符外,System.Ob ...

  8. 安装OWA2013

    首先可以参考以下博客进行安装 http://www.cnblogs.com/poissonnotes/p/3238238.html 需要特别注意的是,我的SHAREPOINT系统虽然是英文版的,但是同 ...

  9. 抓取DUMP日志

    http://technet.microsoft.com/en-us/sysinternals/dd996900.aspx procdump -ma -c 60 -s 10 -n 3 <PID ...

  10. Beginning Asp.Net Security 读书笔记-----XSS

    几个月前通过Veracode对代码进行动态和静态安全扫描,扫出了数以千计的安全bug,基本上都是top 10的,安全漏洞. 其中CWE80,CWE601数量最多.具体CWE的定义可参考http://c ...