面向对象编程,可以使重复代码变少,通过类实现。面对对象三大特征:封装、继承、多态。要有重用性、灵活性和扩展性。
1表现c#面向对象的编程。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp3
{
class He
{
public void Ndf()
{
Console.WriteLine("第一步看正店。");
}
public void Rwe(string thing)
{
Console.WriteLine("我看中了"+thing+"这家店。");
}
public void Rfs()
{
Console.WriteLine("决定吃土买。");
}
}
class Program
{
public static void Main(string[] args)
{
He t = new He();
t.Ndf();
t.Rwe("华姿仪赏");
t.Rwe("小先生汉服");
t.Rfs();
Console.ReadKey();
}
}
}
封装与继承:
封装即将数据和方法等集合在一个个单元中,我们称之为类,意义:保护代码,屏蔽复杂性。
继承即一个类继承于另一个类,即这个类包含另一个类的东西但用不等于另一个类。被继承的类叫父类或者基类,继承的类叫子类或者派生类。
比如:
class A{
blablablabalbalbabla
}
class B:A{
}
抽象类:abstract(父类)和override(子类),父类中抽象方法不能实现,父类抽象方法只能出现在抽象类中。抽象类不能直接实例化(即 XXX t=new XXX()?。
子类的数据可以用父类来定义,即多态。
抽象类中可以有普通方法。
??待解决问题:抽象类不能实例化,那抽象类中的普通方法怎么使用????
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp3
{
public abstract class Food
{
//在抽象父类中是不能定义方法,否则报错。
public abstract void Eat();
public void Sdw()
{
Console.WriteLine("伤害+1。");
}
}
//继承子类:父类
//子类的函数前面要贾override
public class Apple : Food
{
public override void Eat()
{
Console.Write("Hp+10。");
}
}
public class Water : Food
{
public override void Eat()
{
Console.WriteLine("Mp+10。");
}
}
class Program
{
public static void Main(string[] args)
{
Food t = new Apple();
Food f = new Water();
//抽象类不能实例化那怎么使用抽象类的普通方法??
t.Eat();
f.Eat();
Console.ReadKey();
}
}
}
内存中有五个区域:
1 代码区
2常量区(用于存放常量)
3堆区(由程序员自己开辟并管理内存)
4栈区(系统自动管理)
5静态区(全局区)(程序运行过程不释放)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp3
{
interface IDww
{
int x
{
get;
set;
}//接口中允许这样定义int变量,声明属性存取规则。
int y
{
get;
set;
}
//void Dse();
}//接口中方法不允许有指令,接口是声明抽象,不能实例。
class Mypoint :IDww//方法的实现是在接口的类中
{
private int myx;
private int myy;
public Mypoint(int x,int y)//构造函数
{
Console.WriteLine("接口的方法。");
myx = x;
myy = y;
}
//接口定义中属性成员x的实现
public int x
{
get
{
return myx;
}
set
{
myx=value;//这个地方不懂》》》》
}
}
//接口定义中y属性的实现
public int y
{
get
{
return myy;
}
set
{
myy = value;
}
}
}//接口的定义 interface Iblablablablabla(前缀必有I)。
class MainClass
{
private static void PrintPoint(IDww p)//接口
{
Console.WriteLine("x={0},y={1}", p.x,p.y);
}
public static void Main(string[] args)
{
Mypoint p = new Mypoint(2, 3);
Console.Write("My Point: ");
PrintPoint(p);
Console.ReadKey();
}
}
}