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

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;
}
}

虚方法与抽象方法:
虚方法:

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("嘎嘎,我会叫");
}
}

接口特点总结:
静态类和静态方法,抽象类和抽象方法,new关键字,值类型和引用类型,接口的更多相关文章
- C#类和接口、虚方法和抽象方法及值类型和引用类型的区别
1.C#类和接口的区别接口是负责功能的定义,项目中通过接口来规范类,操作类以及抽象类的概念!而类是负责功能的具体实现!在类中也有抽象类的定义,抽象类与接口的区别在于:抽象类是一个不完全的类,类里面有抽 ...
- Docs-.NET-C#-指南-语言参考-关键字-值类型:可以 null 的值类型
ylbtech-Docs-.NET-C#-指南-语言参考-关键字-值类型:可以 null 的值类型 1.返回顶部 1. Nullable value types (C# reference) 2019 ...
- Docs-.NET-C#-指南-语言参考-关键字-值类型:struct
ylbtech-Docs-.NET-C#-指南-语言参考-关键字-值类型:struct 1.返回顶部 1. struct(C# 参考) 2015/07/20 struct 类型是一种值类型,通常用来封 ...
- Docs-.NET-C#-指南-语言参考-关键字-值类型:enum
ylbtech-Docs-.NET-C#-指南-语言参考-关键字-值类型:enum 1.返回顶部 1. enum(C# 参考) 2015/07/20 enum 关键字用于声明枚举,一种包含一组被称为枚 ...
- Docs-.NET-C#-指南-语言参考-关键字-值类型:char
ylbtech-Docs-.NET-C#-指南-语言参考-关键字-值类型:char 1.返回顶部 1. char(C# 参考) 2019/10/22 char 类型关键字是 .NET System.C ...
- Docs-.NET-C#-指南-语言参考-关键字-值类型:bool
ylbtech-Docs-.NET-C#-指南-语言参考-关键字-值类型:bool 1.返回顶部 1. bool(C# 参考) 2015/07/20 bool 关键字是 System.Boolean ...
- Docs-.NET-C#-指南-语言参考-关键字-值类型:内置数值转换
ylbtech-Docs-.NET-C#-指南-语言参考-关键字-值类型:内置数值转换 1.返回顶部 1. 内置数值转换(C# 参考) 2019/10/22 C# 提供了一组整型和浮点数值类型. 任何 ...
- Docs-.NET-C#-指南-语言参考-关键字-值类型-:浮点数值类型
ylbtech-Docs-.NET-C#-指南-语言参考-关键字-值类型-:浮点数值类型 1.返回顶部 1. 浮点数值类型(C# 引用) 2019/10/22 “浮点类型”是“简单类型”的子集,可以使 ...
- C#基础精华02(静态类,值类型,引用类型,枚举,结构,ref与out)
静态类 静态类不能被其他类继承,静态成员亦不能被继承(访问的是同一个),备注1. 静态类只能继承自Object类.(静态类不能继承自其它类.) 继承(多态).静态本身就是相反的. 静态类不能实现任何接 ...
随机推荐
- Requests接口测试-对cookies的操作处理(一)
大家都对cookie都不陌生,我们本篇文章使用requests结合cookie进行实例演示.我们使用一个接口项目地址,因为接口项目涉及到隐私问题,所以这里接口的地址我暂时不会给大家开放,但是我会给大家 ...
- VueX-状态管理器
一.VueX功能与解决的问题 1.中央状态管理器的功能: 1.1.可以管理共享状态1.2.提供一 个可修改状态的方法1.3.提供状态获取的方法1.4.状态更改后,有通知机制 2.中央状态管理器解决的问 ...
- ScreenCapture手动卸载教程-Xproer.ScreenCapture
此教程包含WindowsXP,Windows7(x86) ,Windows7(x64),Firefox,Chrome卸载教程. 1.1. 手动卸载控件-Windows XP 主要步骤如下: 1.关闭所 ...
- java并发编程实战:第十四章----构建自定义的同步工具
一.状态依赖性管理 对于单线程程序,某个条件为假,那么这个条件将永远无法成真 在并发程序中,基于状态的条件可能会由于其他线程的操作而改变 可阻塞的状态依赖操作的结构 acquire lock on o ...
- MFC中的多线程
程序是计算机指令的几何,以文件的形式存在磁盘上.进程被定义为正在运行的程序的实例,是在进行地址空间中的一次执行活动.一个程序可以对应多个进程,如可以通过打开多个Word程序,每个word的应用就是一个 ...
- Metasploit学习指南—基础篇
Metasploit是一款强大的渗透测试平台,其中包括了很多渗透测试利器,本文简单介绍一下Metasploit的配置和基础的使用方法,主要包括以下几个方面: Metasploit的核心 基础的配置 M ...
- DI延伸
延迟初始化Bean 延迟初始化也叫做惰性初始化,指不提前初始化Bean,而是只有在真正使用时才创建及初始化Bean. 配置方式很简单只需在<bean>标签上指定 “lazy-init” 属 ...
- nginx停止
- windows 10 RelativePanel
The new RelativePanel implements a style of layout that is defined by the relationships between its ...
- sharepoint site performance
分析了您之前提供的在CPU使用率高的时候抓取的w3wp进程的dump,以下是一些发现: 在抓取dump文件的这个时刻,.Net的垃圾回收正在运行,在内存资源紧张时,.Net会自动启动内存垃圾回收机制, ...