C# 面向对象:类、根据不同操作符操作两个变量
来源:互联网 发布:侠客行 叮叮当当 知乎 编辑:程序博客网 时间:2024/06/07 16:53
类
1、当使用类时,应添加一个新类
2、类名首字母需大写
3、字段用来存储数据,private;属性用来保护字段;接口、构造函数、方法
public struct1 { // 自动属性:虽然没有写字段,但是还是会生成字段 get; set; }
4、类写好后,需要创建对象: Classes cl=new Classes( ); // Classes是自定义的类名
new关键字的作用:1、在堆中开辟空间 2、在开辟空间中创建对象 3、调用对象的构造函数(构造函数必须为public,初始化对象)
5、static、 抽象类不可以创建对象;
在类中 this.name ,this指当前类的对象(如下面代码)
6、静态类的成员被修饰时,调用类名.静态成员名 ;非静态调用:对象名.非静态成员名 / 对象名.实例成员
This 的用法:
第一个用法:
public void print() { string name = "vivi"; Console.WriteLine("{0}",this.name); // 在这个函数中,本来是打印对象的name,如果不加this进行限定的话,直接打印的为变量的值。 }
第二个用法:
调用自己的构造函数
public class void initial(int n1,int n2,int n3,int n4 ,int n5) { this.N1=n1; this.N2=n2; this.N3=n3; this.N4=n4; this.N5=n5; } public class void initial(int n1,int n2,int n3) :this(n1,n2,n3,0,0) // 调用自己全参的构造函数 { }
7、继承单一性、传递性;接口可以有多个继承;子类没法继承父类的字段(private),子类没有继承父类的构造函数,而是默认会调用父类按个无参数的构 造函数,若父类的构造函数重写了,自动替换掉父类的无参数的默认构造函数,子类无法调用父类的默认无参数的构造函数,出现异常,需要子类重新写一个构造函数。子类先创建一个父类对象,在子类中调用父类的构造函数,使用base()
继承:方法
8、子类可以复制给父类;如果父类装的是子类,可以将父类转换为子类;
如果两个类有继承关系,子类既可以使用自己的成员,也可以使用从父类继承的成员。但是父类永远只能使用自己的成员。
子类之间也不能相互使用对方的成员。
public class student:person { } person ps=new student(); //ps表现的是父类的类型,装的是子类的对象。-- 父类。 student st=(student)person; 或者使用as来转换: stduent st1 = ps as student;// 使用as来转换的话,转换成功,返回转换后的对象;转换失败,返回null。 或者使用is做判断 if( ps is student) { } // 如果可以转换,返回true;否则返回false object类是所有类的父类。
9、虚方法和抽象类
如果父类有意义,可以创建方法进行调用。可以使用virtual;
如果父类不知道方法如何实现,可使用抽象类abstract;
虚拟成员或抽象成员不能是私有的。
以前都是面向过程,现在是面向对象--类;
例子:实现根据不同操作符计算两个int的操作;// 本处用两个int型;
1、Program.csnamespace calculator{ class Program { static void Main(string[] args) { //创建一个面向对象的,两个数字的运算; Console.WriteLine("请输入要计算的第一个数字"); int num1=Convert.ToInt32(Console.ReadLine ()); Console.WriteLine("请输入要计算的第二个数字"); int num2 = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("请输入运算符"); string oper =Console.ReadLine (); // 根据运算符不同,决定怎么计算 CalFather cf = Decise(oper,num1,num2); double r = cf.GetResult(); Console.WriteLine("计算结果为{0}",r); Console.ReadKey(); } public static CalFather Decise(string oper,int num1,int num2) // static 需要引用类名使用;非static的话,需要在这里创建program类(所在的类),再引用 { CalFather calf=null; switch(oper){ case "+": calf = new PlusCal(num1,num2); break; case "-": calf = new MinuCal(num1,num2); break; case "*": calf = new MultiCal(num1,num2); break; case "/": calf = new DivCal(num1,num2); break; default: Console.WriteLine("请输入正确的操作符"); break; } return calf; } }}2、CalFather.csnamespace calculator{ public abstract class CalFather { public int Number1 { get; set; } public int Number2 { get; set; } public CalFather(int N1, int N2) { this.Number1 = N1; this.Number2 = N2; } public abstract double GetResult(); }}3、PlusCal.csnamespace calculator{ public class PlusCal : CalFather { public PlusCal(int n1, int n2) :base(n1,n2) { } public override double GetResult() //重写父类的抽象方法 { double res; res = this.Number1 + this.Number2; return res; } }}4、MinuCal.csnamespace calculator{ public class MinuCal:CalFather { public MinuCal(int m1,int m2) :base(m1,m2){ } public override double GetResult() { return this.Number1 - this.Number2; } }}5、MultiCal.csnamespace calculator{ public class MultiCal : CalFather { public MultiCal(int n1,int n2) : base(n1,n2) { } public override double GetResult() { return this.Number1 * this.Number2; } }}6、DivCal.csnamespace calculator{ public class DivCal : CalFather { public DivCal(int n1,int n2) : base(n1,n2) { } public override double GetResult() { return this.Number1 / this.Number2; } }}
- C# 面向对象:类、根据不同操作符操作两个变量
- [TwistedFate]面向对象编程、类和对象、实例变量操作
- 类和对象:Objective-C概述、面向对象编程、类和对象、实例变量操作
- [js] 变量 操作符 对象
- day1: Objective-C概述、面向对象编程、类和对象、实例变量操作
- 进击的KFC:OC概述、面向对象编程、类和对象、实例变量操作
- 常规版中,重复执行同一脚本,根据变量内容做不同操作。
- 根据属性操作JSON对象
- 【C++面向对象】自定义重载操作符
- 【C++面向对象】重载++操作符
- 【C++面向对象】[]操作符的重载
- PHP面向对象文件操作类
- C#中的两个+(plus)操作符解析
- C++面向对象操作符重载:输入输出操作符
- C#操作Excel_Excel对象
- C#操作Excel对象
- C#操作SqlDataReader对象
- Spring JDBC 面向对象操作
- sql 设置主键
- ip地址 子网掩码 默认网关的联系
- C++11:深入理解右值引用,move语义和完美转发
- 微信小程序Redux绑定
- Myeclipse安装Gradle插件
- C# 面向对象:类、根据不同操作符操作两个变量
- Magenta
- CentOS firewall和selinux相关
- java 多态 父类引用指向子类对象
- Android事件分发机制详解:史上最全面、最易懂
- ubuntu find+sed+grep+args
- python3.5学习笔记:linux6.4 安装python3 pip setuptools
- IIS下建立负载均衡的虚拟目录方法
- 70. Climbing Stairs