面向对象的核心概念
(1 )封装
封装的类=数据+对此数据所进行的操作(即属性+方法)
通俗的说,封装就是:包起外界不必需要知道的东西,只向外界展露可供展示的东西。
(2)抽象
在使用面向对象的方法设计一个软件系统时,首先就要区分出现实世界的 事物所属的类型。
分析问题的思路:
首先将将实物的共性全抓出来。(也就是对它进行抽象)
然后在逐个分析异性。(也就是具体)
(3)继承
不是我们认为的遗传的继承, 而是包含的意思。
(4)多态
基类拥有的特性,子类一定有,
用抽象的类编程 。
2 类与对象
类是面向对象编程的 基本单元。(一切皆为对象 )
只有声明为public的变量和函数可以被外界调用,其余声明为private的变量和函数是私有的,只能由自己的类使用。
案例1、
求游泳池的面积:
class yongchi { public int r; public double zhouchang() { double c = 2 * 3.14 * r; return c; } public double mianji() { double s = 3.14 * r * r; return s; } } class Program { static void Main(string[] args) { yongchi small = new yongchi(); yongchi big = new yongchi(); Console.Write("游泳池的半经"); small.r = Convert.ToInt32(Console.ReadLine()); Console.Write("广场的半经"); big.r = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("游泳池的周长为" + small.zhouchang()); Console.WriteLine("游泳池的面积为" + small.mianji()); Console.WriteLine("广场的周长为" + big.zhouchang()); Console.WriteLine("广场的面积为" + (big.mianji() - small.mianji())); } }
效果图:
案例2、
狗咬狗
class Dog { public string Name; public int HP=100; public void Bark(Dog op) { Console.Write(Name+"咬了"+op.Name+"一口,"); op.HP -= 5; Console.Write(op.Name+"剩余血量为"+op.HP+"\n"); } } class Class1 { static void Main(string[] args) { Dog d1=new Dog(); Dog d2=new Dog(); d1.Name = "旺财"; d2.Name = "大黄"; d1.Bark(d2); d2.Bark(d1); d1.Bark(d2); d2.Bark(d1); } }
效果图:
案例3、
class Ren { public string Name; private int Height; private int Weight; public void H1(int h) { if (h <= 0 || h >= 300) { Console.WriteLine("你输入的身高有错误"); } else { Height = h; } } public void W1(int w) { if (w <= 0 || w >= 1000) { Console.WriteLine("你输入的体重有错误"); } else { Weight = w; } } public void Speak() { Console.WriteLine("我叫" + Name + ",体重" + Weight + "千克,身高" + Height + "厘米"); } public void yundong() { } } class Class2 { static void Main(string[] args) { Ren r1 = new Ren(); r1.Name = "小明"; Console.Write("请输入身高:"); int h1 = Convert.ToInt32(Console.ReadLine()); Console.Write("请输入体重:"); int w1 = Convert.ToInt32(Console.ReadLine()); r1.H1(h1); r1.W1(w1); r1.Speak(); } }
效果图: