【黑马.Net程序员】C#继承与多态练习
来源:互联网 发布:税收数据质量 编辑:程序博客网 时间:2024/05/16 22:02
------------黑马.net培训-----------、wp7培训、.net培训、期待与您交流!
题目:
设计一个抽象类Shape(图形)包含求面积和周长的area()方法和perimeter()方法以及设置颜色的方法SetColor(),并利用Java多态技术设计其子类Circle(圆形)类和Triangle(三角形)类,并分别实现相应的求面积和求周长的方法。
Shape.cs
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace 抽象类{ abstract class Shape { public abstract double Area();//求面积 public abstract double Perimeter();//求周长 public abstract string Setcolor();//设置颜色 }}
Clircle.cs
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace 抽象类{ class Clircle:Shape { private int r; /// <summary> /// 设置属性 /// </summary> public int R { get { return r; } set { r = value; } } private int rea; /// <summary> /// 面积 /// </summary> public int Rea { get { rea = 0; return rea; } } private string color; /// <summary> /// 颜色 /// </summary> public string Color { get { return color; } set { color = value; } } /// <summary> /// 构造函数 /// </summary> public Clircle(int r) { this.r = r; } /// <summary> /// 两个参数的构造函数 /// </summary> /// <param name="r"></param> /// <param name="color"></param> public Clircle(int r, string color) { this.r = r; this.color = color; } /// <summary> /// 重载Area()函数 /// </summary> /// public override double Area() { return 3.14 * r * r; } /// <summary> /// 重载Perimeter()函数 /// </summary> /// <returns></returns> public override double Perimeter() { return 2 * 2 * r; } /// <summary> /// 重载Setcolor()函数 /// </summary> /// <returns></returns> public override string Setcolor() { return color; } }}
Triangle.cs
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace 抽象类{ class Triangle:Shape { private double l; /// <summary> /// 设置第一个边长 /// </summary> public double L { get { return l; } set { l = value; } } /// <summary> /// 设置第二个边长 /// </summary> private double l1; public double L1 { get { return l1; } set { l1 = value; } } private double l2; /// <summary> /// 设置第三边长 /// </summary> public double L2 { get { return l2; } set { l2 = value; } } private double zc; public double Zc { get{return zc;} set{zc=0;} } private double s; /// <summary> /// 得到面积 /// </summary> /// public double S { get { return s; } set { s = 0; } } /// <summary> /// 设置颜色 /// </summary> private string color; public string Color { get { return color; } set { color = value; } } /// <summary> /// 无参数的构造函数 /// </summary> public Triangle() { } /// <summary> /// 带有两个参数的构造函数 /// </summary> /// <param name="l"></param> /// <param name="g"></param> public Triangle(double l, string color) { this.l = l; this.color=color; } /// <summary> /// 带有四个参数的构造函数 /// </summary> /// <param name="l"></param> /// <param name="l1"></param> /// <param name="l2"></param> /// <param name="color"></param> public Triangle(double l, double l1, double l2, string color) { this.l = l; this.l1 = l1; this.l2 = l2; this.color = color; } /// <summary> /// 返回面积 /// </summary> /// <returns></returns> public override double Area() { return Math.Sqrt( zc/2*(zc/2-l)*(zc/2-l1)*(zc/2-l2)); } /// <summary> /// 返回周长 /// </summary> /// <returns></returns> public override double Perimeter() { zc= L + l1 + l2; return zc; } /// <summary> /// 返回颜色 /// </summary> /// <returns></returns> public override string Setcolor() { return color; } }}Program.cs
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace 抽象类{ class Program { static void Main(string[] args) { Shape c, s; c = new Clircle(12,"red"); s = new Triangle(3,4,5,"green"); s.Perimeter(); Console.WriteLine("三角形的面积为:{0}", s.Area()); Console.WriteLine("圆的面积为:{0}", c.Area()); Console.WriteLine("圆的周长为:{0}", c.Perimeter()); Console.WriteLine("颜色为:{0}", c.Setcolor()); //使用多态 show(c); show(s); Console.ReadKey(); } public static void show(Shape s) { Console.WriteLine(s.Perimeter()); Console.WriteLine( s.Area()); Console.WriteLine( s.Setcolor()); } }}
运行结果:
总结:多态是面向对象的重要特性,简单点说:“一个接口,多种实现”,就是同一种事物表现出的多种形态。
------------黑马.net培训-----------、wp7培训、.net培训、期待与您交流!
- 【黑马.Net程序员】C#继承与多态练习
- 黑马程序员_继承与多态
- 黑马程序员_多态与继承
- 黑马程序员_继承与多态
- 黑马程序员—继承与多态
- 黑马程序员--OC-多态与继承
- 黑马程序员-继承、接口与多态
- 黑马程序员—继承与多态
- 黑马程序员:C#基础篇(四)抽象类、接口、继承与多态
- 黑马程序员-.NET基础之继承和多态
- 黑马程序员—C#继承
- 【黑马程序员】C#之继承
- 黑马程序员_.NET继承
- 黑马程序员-------java学习笔记之继承与多态
- 黑马程序员----继承、内部类与多态,包
- 黑马程序员-面向对象中的继承与多态
- 黑马程序员_Java 中的继承与多态
- 黑马程序员-面向对象(继承与多态)
- linux下vi命令大全
- delphi控件安装与删除
- 帮您快速入门 TI 的 Codec Engine
- Oracle时间日期操作
- ubuntu软件边框消失
- 【黑马.Net程序员】C#继承与多态练习
- /etc/inittab 配置文件
- SVM(支持向量机)综述
- 正则表达式
- Flex4之元数据标签:[ArrayElementType] [Bindable] [DefaultProperty] [Deprecated] [Embed] 等
- mybatis abatis OrmLite android
- 使用Maven构建项目
- hashmap
- ftp server