1.根据代码写出输出结果
知识点:
- 子类在执行构造方法时,若没有显示调用父类的构造方法,系统会隐式调用父类的无参构造方法(没有无参构造的话,报错)
- 向上转型:父类引用指向子类对象,当子类对象中的方法没有覆写(用override标注方法)父类中的虚函数(virtual标注的方法),而是用new关键字标注,父类引用执行方法并不会执行子类中的同名方法,而是执行父类中的原方法。
using System;
namespace cchoop
{
class Program
{
static void Main(string[] args)
{
A a = new B();
a.Fun();
}
}
public abstract class A
{
public A()
{
Console.WriteLine('A');
}
public virtual void Fun()
{
Console.WriteLine("A.Fun()");
}
}
class B : A
{
public B()
{
Console.WriteLine('B');
}
public new void Fun()
{
Console.WriteLine("B.Fun()");
}
}
}
输出结果:
A
B
A.Fun()
(2)
using System;
namespace cchoop
{
class Program
{
static void Main(string[] args)
{
B b = new B();
A a = new A();
a.Fun2(b); //2 5
b.Fun2(a); //1 6
}
}
public class A
{
public virtual void Fun1(int i)
{
Console.WriteLine(i);
}
public void Fun2(A a)
{
a.Fun1(1);
Fun1(5);
}
}
class B : A
{
public override void Fun1(int i)
{
base.Fun1(i + 1);
}
}
}
输出结果:
2
5
1
6
2.定义一个圆Circle类,重写ToString方法,返回圆的半径、周长、面积等信息
using System;
namespace cchoop
{
class Program
{
static void Main(string[] args)
{
Circle circle = new Circle(2);
Console.WriteLine(circle);
}
}
class Circle
{
private float r;
public Circle(float r)
{
this.r = r;
}
public float GetLength()
{
return (float)(2 * r * Math.PI);
}
public float GetArea()
{
return (float)(r * r * Math.PI);
}
public override string ToString()
{
return "半径:" + this.r +
",面积:" + GetArea()
+ ",周长:" + GetLength();
}
}
}
3.
- 商品id 名字 数量 价格 * 1001 苹果 100 1 * 1002
乐事薯片 20 2 * 简易版商品管理系统: * 提示:最多不超过5种商品(水果,厨具,饼干等等) *
输入1,进行添加商品的操作; * 通过键盘输入每种商品的信息,并进行存储; 输入2,进入查询商品的操作(显示商品的基本信息); *
using System;
using System.Collections.Generic;
namespace cchoop
{
class Program
{
static void Main(string[] args)
{
Store store = new Store();
store.Menu();
}
}
/// <summary>
/// 约定好商品的Id
/// </summary>
public class GoodsType
{
public const string Fruit = "1001";
public const string kitchenWare = "1002";
public const string Cookies = "1003";
public const string Shoes = "1004";
}
/// <summary>
/// 商店
/// </summary>
class Store
{
//存储商品信息
private Dictionary<string, Goods> goodsDit = new Dictionary<string, Goods>();
public Store()
{
Fruit fruit = new Fruit(GoodsType.Fruit, "海南椰子", 1000, 2.9f);
goodsDit.Add(GoodsType.Fruit, fruit);
kitchenWare kitchenWare = new kitchenWare(GoodsType.kitchenWare, "关东菜刀", 200, 20);
goodsDit.Add(GoodsType.kitchenWare, kitchenWare);
Cookies cookies = new Cookies(GoodsType.Cookies, "锋味曲奇饼", 100, 99);
goodsDit.Add(GoodsType.Cookies, cookies);
Shoes shoes = new Shoes(GoodsType.Shoes, "adidas鞋", 100, 599);
goodsDit.Add(GoodsType.Shoes, shoes);
}
public void Menu()
{
Console.WriteLine("==============欢迎来到CC商店=============");
Console.WriteLine("商品Id\t\t商品名\t\t商品剩余数量\t\t商品价格");
Console.WriteLine("-------------------------------------------------------------------");
foreach (var item in goodsDit)
{
Console.WriteLine("{0}\t\t{1}\t\t{2}\t\t{3}元", item.Value.Id, item.Value.Name, item.Value.Num, item.Value.price);
}
Console.WriteLine("==========================================");
Console.Write("输入1添加商品;输入2查询商品,输入3退出,请输入:");
int op = 0;
while (true)
{
string opStr = Console.ReadLine();
try
{
op = Int32.Parse(opStr);
}
catch (Exception e)
{
Console.WriteLine("输入无效,请重新输入:");
continue;
}
if (op != 1 && op != 2 && op != 3)
{
Console.WriteLine("输入无效,请重新输入:");
continue;
}
break;
}
switch (op)
{
case 1:
AddGoods();
break;
case 2:
SerachGoodsInfo();
break;
case 3:
Environment.Exit(0);
break;
}
}
//添加商品信息
private void AddGoods()
{
Console.WriteLine("请输入要添加商品的编号:");
string idStr = null;
while (true)
{
idStr = Console.ReadLine();
if (idStr.Trim() != GoodsType.Fruit && idStr.Trim() != GoodsType.Cookies && idStr.Trim() != GoodsType.Shoes && idStr.Trim() != GoodsType.kitchenWare)
{
Console.WriteLine("输入无效,请重新输入:");
continue;
}
break;
}
Console.WriteLine("请输入要添加的数量:");
int numAdd = 0;
while (true)
{
string numStr = Console.ReadLine();
try
{
numAdd = Int32.Parse(numStr);
}
catch (Exception e)
{
Console.WriteLine("输入无效,请重新输入:");
continue;
}
if (numAdd < 0)
{
Console.WriteLine("输入无效,请重新输入:");
continue;
}
break;
}
if (this.goodsDit.ContainsKey(idStr))
{
this.goodsDit[idStr].Num += numAdd;
}
Console.WriteLine("添加成功!\n按任意键返回主菜单:");
Console.ReadKey();
Console.Clear(); //清空控制台的内容
this.Menu();
}
//查询商品信息
private void SerachGoodsInfo()
{
Console.WriteLine("请输入要查询商品的编号:");
string idStr = null;
while (true)
{
idStr = Console.ReadLine();
if (idStr.Trim() != GoodsType.Fruit && idStr.Trim() != GoodsType.Cookies && idStr.Trim() != GoodsType.Shoes && idStr.Trim() != GoodsType.kitchenWare)
{
Console.WriteLine("输入无效,请重新输入:");
continue;
}
break;
}
switch (idStr)
{
case GoodsType.Fruit:
if (this.goodsDit.ContainsKey(GoodsType.Fruit))
{
Goods goods = goodsDit[GoodsType.Fruit];
Console.WriteLine("商品Id\t\t商品名\t\t商品剩余数量\t\t商品价格");
Console.WriteLine("-------------------------------------------------------------------");
Console.WriteLine("{0}\t\t{1}\t\t{2}\t\t{3}元", goods.Id, goods.Name, goods.Num, goods.price);
}
else
{
Console.WriteLine("商品不存在");
}
break;
case GoodsType.kitchenWare:
if (this.goodsDit.ContainsKey(GoodsType.kitchenWare))
{
Goods goods = goodsDit[GoodsType.kitchenWare];
Console.WriteLine("商品Id\t\t商品名\t\t商品剩余数量\t\t商品价格");
Console.WriteLine("-------------------------------------------------------------------");
Console.WriteLine("{0}\t\t{1}\t\t{2}\t\t{3}元", goods.Id, goods.Name, goods.Num, goods.price);
}
else
{
Console.WriteLine("商品不存在");
}
break;
case GoodsType.Cookies:
if (this.goodsDit.ContainsKey(GoodsType.Cookies))
{
Goods goods = goodsDit[GoodsType.Cookies];
Console.WriteLine("商品Id\t\t商品名\t\t商品剩余数量\t\t商品价格");
Console.WriteLine("-------------------------------------------------------------------");
Console.WriteLine("{0}\t\t{1}\t\t{2}\t\t{3}元", goods.Id, goods.Name, goods.Num, goods.price);
}
else
{
Console.WriteLine("商品不存在");
}
break;
case GoodsType.Shoes:
if (this.goodsDit.ContainsKey(GoodsType.Shoes))
{
Goods goods = goodsDit[GoodsType.Shoes];
Console.WriteLine("商品Id\t\t商品名\t\t商品剩余数量\t\t商品价格");
Console.WriteLine("-------------------------------------------------------------------");
Console.WriteLine("{0}\t\t{1}\t\t{2}\t\t{3}元", goods.Id, goods.Name, goods.Num, goods.price);
}
else
{
Console.WriteLine("商品不存在");
}
break;
default:
Console.WriteLine("商品不存在");
break;
}
Console.WriteLine("按任意键返回主菜单:");
Console.ReadKey();
Console.Clear(); //清空控制台的内容
this.Menu();
}
}
/// <summary>
/// 货物类
/// </summary>
abstract class Goods
{
public string Id { get; protected set; }
public string Name { get; set; }
public int Num { get; set; }
public float price { get; set; }
public Goods() { }
public Goods(string id, string name, int num, float price)
{
this.Id = id;
this.Name = name;
this.Num = num;
this.price = price;
}
}
/// <summary>
/// 水果类
/// </summary>
class Fruit : Goods
{
public Fruit()
{
this.Id = GoodsType.Fruit;
}
public Fruit(string id, string name, int num, float price)
: base(id, name, num, price)
{
}
}
/// <summary>
/// 厨具类
/// </summary>
class kitchenWare : Goods
{
public kitchenWare()
{
this.Id = GoodsType.kitchenWare;
}
public kitchenWare(string id, string name, int num, float price)
: base(id, name, num, price)
{
}
}
/// <summary>
/// 饼干类
/// </summary>
class Cookies : Goods
{
public Cookies()
{
this.Id = GoodsType.Cookies;
}
public Cookies(string id, string name, int num, float price)
: base(id, name, num, price)
{
}
}
/// <summary>
/// 鞋子
/// </summary>
class Shoes : Goods
{
public Shoes()
{
this.Id = GoodsType.Shoes;
}
public Shoes(string id, string name, int num, float price)
: base(id, name, num, price)
{
}
}
}