静态类和静态方法,抽象类和抽象方法,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类.(静态类不能继承自其它类.) 继承(多态).静态本身就是相反的. 静态类不能实现任何接 ...
随机推荐
- FPGA时序约束和timequest timing analyzer
FPGA时序约束 时钟约束 #************************************************************** # Create Clock #****** ...
- 如何查看非自己提交的请求的结果 - 深入浅出Oracle EBS之杂项技术荟萃
如何查看非自己提交的请求的结果定位要找的请求SQL举例:SELECT req.request_id, fcp.user_concurrent_program_name, usr ...
- CURL命令测试网站打开速度
curl -o /dev/null -s -w %{time_namelookup}:%{time_connect}:%{time_starttransfer}:%{time_total} http: ...
- 电表读数归零回滚SQL处理算法
在采集电表数据的时候,可以发现有些电表设备读数会发生回滚.这时候,如果单纯的累加计算用电量,就会出现负值.当然,这也许和电表的质量有关系. “RTQty”(当前读到的读数).“LastQty”(上次读 ...
- c#格式化字符
1.格式化货币(跟系统的环境有关,中文系统默认格式化人民币,英文系统格式化美元) string.Format("{0:C}",0.2) 结果为:¥0.20 (英文操作系统结果:$0 ...
- Sqlserver 密码过期时间查询
DECLARE @login nvarchar(30) -- 查询设定密码过期的登陆账号SELECT @login = nameFROM sys.sql_loginsWHERE is_expirati ...
- centos6.6 下安装mysql5.7
背景 没啥好说的,就是需要搭建自己的测试数据库跟研发的数据隔离开来,需要怼mysql 这个方法只适合mysql5.7 # mysql5.6的有差异 步骤 1. 确认线上mysql的版本 SELECT ...
- unity 序列化和反序列化
什么是序列化和反序列化(1)序列化是指把对象转换为字节序列的过程,而反序列化是指把字节序列恢复为对象的过程:. (2)序列化:对象序列化的最主要的用处就是在传递和保存对象的时候,保证对象的完整性和可 ...
- C#基础笔记(第十五天)
1.Directory//File 文件 Path 路径 FileStream StreamReader StreamWriter 流 Directory 文件夹 目录 //创建文件夹 Directo ...
- 论文研读之Spinnaker
论文:Using Paxos to Build a Scalable, Consistent, and Highly Available Datastore Motivation 可扩展性: 随着数据 ...