首页 > 代码库 > 虚方法,重写————继承、多态、面向对象!

虚方法,重写————继承、多态、面向对象!

1、 this 不能直接调用 非static成员
class A
{
static public void M1()
{
Hello(); // 错误 在static成员中不能
直接调用非static成员
A a=new A();
a.Hello();
}
public void Hello()
{
F1 =10;
M1();
A.M1();
this.M1() //错误 不能调用
}
}

2、 静态类不能new;
静态类中不能声明非静态成员。

3、sealed 密闭类不能被继承


Fromwork

4、Paint 重绘控件
private void panel1_Paint(object
sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
// g.Dispose();
}
重绘控件 不用释放。

5、画一个圆
g.DrawEllipse(Pens.Blue, 20, 50, 60, 80);
//椭圆 (边框颜色,左上角坐标(20,50
),宽度为60,高为80);
g.DrawRectangle(Pens.Blue, 20, 50, 60,
80);

6、int.Parse()与int.TryParse()
int i = -1;
bool b = int.TryParse(null, out i);
执行完毕后,b等于false,i等于0,而不是等于-1
,切记。
int i = -1;
bool b = int.TryParse("123", out i);
执行完毕后,b等于true,i等于123;

7、virtual 虚方法 与override(重写) 连用
class A
{
public virtual void M1()
{ }
}
class B:A
{
public override void M1()
{
Console.WriteLine("213");
}
}
Virtual关键字表示方法,使用Virtual关键字修
饰的方法,必须有实现{},子类可以重写
(override),也可以不重写。

注:方法重写时,方法签名必须与父类中的虚方法
完全一致,否则重写不成功,其中包括“返回值”

8、多态实例(面向对象)  virtual ,  override

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("请输入姓名");
Person p = new Person();
p.Name = Console.ReadLine();
Console.WriteLine("请输入性别");
p.Sex = Console.ReadLine();
PersonBase pb = null;
if (p.Sex == "1")
{
pb = new Man(p);
}
else {
pb = new Woman(p);
}
pb.Show();
//Console.WriteLine();
Console.ReadLine();
}
}

class Person
{
public string Name { get; set; }
public string Age { get; set; }
public string Sex { get; set; }

}

class PersonBase
{
protected string Name;
public PersonBase(Person model)
{
this.Name = model.Name;
}
public virtual void Show()
{
Console.WriteLine(string.Format("{0}是人",Name));
}
}

class Man:PersonBase
{
public Man(Person model):base(model) { }
public override void Show()
{
Console.WriteLine(string.Format("{0}是男人", Name));
}
}

class Woman : PersonBase
{
public Woman(Person model):base(model) { }
public override void Show()
{
Console.WriteLine(string.Format("{0}是女人", Name));
}
}
}

虚方法,重写————继承、多态、面向对象!