静态类和静态方法:静态成员是与类相关,而非实例相关;普通类中的静态成员: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类.(静态类不能继承自其它类.) 继承(多态).静态本身就是相反的. 静态类不能实现任何接 ...
随机推荐
-
Javascript 语言精粹 代码片段合集
Javascript 语言精粹 代码片段合集 标签:Douglas-Crockford Javascript 最佳实践 原文链接 更好的阅读体验 使用一个method 方法定义新方法 Function ...
-
hdu 4614 pieces 状态DP
题意:给你一个长度小于等于16的字符串,每次可以删除一个回文传,问你最少删除干净的字数. 状态+dp dp[i] = min(dp[i],dp[j]+dp[j^i]);(j是i的字串): 连接:htt ...
-
JavaScript 判断对象是否为空
/** **判断是否null *@param data */ function isNull(data) { return (data == "" || data == u ...
-
nginx的请求接收流程(一)
今年我们组计划写一本nginx模块开发以及原理解析方面的书,整本书是以open book的形式在网上会定时的更新,网址为http://tengine.taobao.org/book/index.htm ...
-
IEnumerable实践应用
1.集合想要支持foreach方式遍历,需要返回一个迭代器(IEnumerator),foreach会自动调用迭代器的状态迁移(MoveNext().Curent.Reset()) #region A ...
-
25+免费的Bootstrap HTML5网站模板
在前端框架中,Bootstrap可以说是非常有名的高级网站设计框架.网上也有很多使用Bootstrap程序创建的免费模板.这些模板设计成响应式模式,因此你可以使用它们来为所有的设备平台和浏览器创建网站 ...
-
memset的实验
关于memset的实验 实验一:memset对char数组赋初值 #include<iostream> using namespace std; int main() { char a ...
-
Angular CLI: 发布到 GitHub Pages
发布 Angular 应用的简单方式是使用 GitHub Pages. 首先需要创建一个 GitHub 账号,随后,为您的项目创建一个仓库.记下 GitHub 中的用户名和项目名称. 例如,我的 Gi ...
-
关于table相关的属性,CSS样式
table属性: 1:border没有设置的话表格没有边框 2:cellpadding单元格和内容的空白 3:cellspacing单元格和单元格之间的空白 4:frame规定外边框可见性 5:rul ...
-
vue事件绑定处理
事件监听指令 v-on 指令监听 DOM 事件来触发一些 JavaScript 代码,通常是触发一个函数,简写@ <template> <div id="app" ...