C#成员访问和抽象类与接口

一.成员访问和属性

在定义类的时候我们要考虑成员的访问权限,在这里详细说明private加深大家对private的理解;如果类的成员是private那么在其他类中调用该类对象来访问它是非法的。下面举例说明:

class Per

{

private string name;

public string address;

public int age;

public Per()

{

name = "Upagn";

address = "changsha";

}

}

在Main()函数中的代码如上图所示,

在编译过程中会出现错误:

错误“ceshi.Per.name”不可访问,因为它受保护级别限制

有关属性set和get,set and get,它们的用途:  一般是对类里面的变量进行操作. 而不是直接对类的变量进行操作.有一个很大的作用就是:  便于维护.看下面的程序



在实际程序中的变量调用get和set:

Per percy = new Per();

Console.WriteLine(percy.address);

Console.WriteLine(percy.name);

percy.age = 22; //调用set对age赋值

Console.WriteLine(percy.age);

//调用get获取当前对象age的值

二.有关抽象类和抽象方法的实现

抽象类中只定义了一些成员和抽象的方法,当中成员不一定是抽象的,但是方法必须是抽象的,而且要在子类中覆盖来现实一定的功能;抽象类是不能实例化的。抽象方法也是,只定义了一个方法体,没有具体实现的代码,要在子类中覆盖,下表中左边是个抽象类和它的抽象方法,右边的类继承了它并实现了抽象方法


public abstract class Myab

{

public abstract void Hi(string Name);

//抽象方法不可有主体。   

}


public class SubMyab : Myab

{   public override void Hi(string Name)

{

Console.WriteLine(Name + "override void Hi(string Name");  }

}

类可以这样来初时化并使用: SubMyab obj = new SubMyab();obj.Hi(obj.city); 接口与抽象类的区别是接口中所有的成员都是抽象的,不能包含构造函数,析构函数和静态成员与常量。一个接口可以被多个类继承,一个类可以继承多个接口,并实现接口中的方法,下面定义一个接口,来求三个不同形状的面积:


public interface Ishape

{

double GetArea();//抽象方法只能写成这个样子

}//三个类的实例对象求面积

Retange Myre = new Retange(2, 8);  Console.WriteLine(Myre.GetArea());

Triangle MyTri = new Triangle(5, 1, 9);

Console.WriteLine(MyTri.GetArea());

Circle MyCur = new Circle(10);

Console.WriteLine(MyCur.GetArea());


public class Circle : Ishape

{

public double radius;

public Circle(double radius)

{

this.radius = radius; //构造函数

}

public double GetArea()

{

return (Math.PI) * this.radius * this.radius;

}

}


public class Retange : Ishape

{

public double witdh;

public double height;

public Retange(double width, double height)

{

this.witdh = width;

this.height = height;//构造函数

}

public double GetArea()

{

return this.height * this.witdh;

}

}

输出结果是:


public class Triangle : Ishape

{

public double Arc1;

public double Arc2;

public double Arc3;

public Triangle(double Arc1,double Arc2,double Arc3)

{

this.Arc1 = Arc1;

this.Arc2 = Arc2;

this.Arc3 = Arc3; //构造函数

}

public double GetArea()

{

return this.Arc1 * this.Arc2 * this.Arc3;

}

}

上面的代码请大家认真分析并自己敲入电脑中实现,不要直接拷贝。下一节将讲述C#字符串处理。

时间: 2024-08-29 00:14:07

C#成员访问和抽象类与接口的相关文章

抽象类与接口

和非抽象类一样,抽象类也必须提供在基类列表中出现的所有接口成员的实现.不同的是,抽象类允许将接口的方法映射到抽象的成员方法. interface IMethods { void F(); void G(); } abstract class C:IMethods { public abstract void F(); public abstract void G(); } 上例中,所有C的非抽象的派生类必须重载C中的抽象方法来提供对接口的实现. 注意:显式说明的接口成员不能是抽象的,但它允许调用

抽象类与接口的区别

接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的.接口中的方法定义默认为public abstract类型,接口中的成员变量类型默认为public static final (这里需要说一点,既然一个变量被final修饰了,那么这个变量就是一个常量!!!!!变量必须初始化成常量!!!!!) 下面比较一下两者的语法区别: 1.抽象类可以有构造方法,接口中不能有构造方法. 2.抽象类中可以有普通成员变量,接口中没有普通成员变量!!!!!!!(注意重点在 普通 即

Java基础-09总结final,多态,抽象类,接口

你需要的是什么,直接评论留言. 获取更多资源加微信公众号"Java帮帮" (是公众号,不是微信好友哦) 还有"Java帮帮"今日头条号,技术文章与新闻,每日更新,欢迎阅读 学习交流请加Java帮帮交流QQ群553841695 分享是一种美德,分享更快乐! 1:final关键字(掌握) (1)是最终的意思,可以修饰类,方法,变量. (2)特点: A:它修饰的类,不能被继承. B:它修饰的方法,不能被重写. C:它修饰的变量,是一个常量. /* final可以修饰类,方

java面向对象(三)之抽象类,接口

java类 java类分为普通类和抽象类,接口,上一节我大概讲了java类的一般格式,今天将抽象类和接口.同时讲一下它们是怎样存储的. 最重要的是理解为什么要有抽象和接口,这样学下来你猜不会迷茫,才能更好的去使用,所以多看看我写的关于抽象类和接口的目的. 抽象类 目的 为了对代码更好的维护和重用. 解析: 抽象类往往用来表征对问题领域进行分析.设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象. 1.因为抽象类不能实例化对象,所以必须要有子类来实现它之后才能使用.这样就可

java 抽象类与接口的区别介绍_java

抽象类与接口的区别 抽象类 包含抽象方法的类就是抽象类,声明的语句:abstract class 必须是public protected 接口 对行为的抽象,声明语句:interface 抽象方法的修饰符:public abstract 成员变量的修饰符:public static final 语法层面 抽象类中可以包含成员方法的实现细节,而接口中只能存在抽象方法-public abstract 抽象类中的成员变量可以是各种类型,接口中的成员变量只能是public static final 抽象

java 抽象类与接口(1/2)

java 抽象类与接口 1.       语法上的不同 接口与抽象类在语法上就有着明显的区别: (1)    成员变量 接口没有变量,在接口中定义的成员都是公共常量即public.final.static,即使不显示标识,编译器也会自动加上. 抽象类的成员变量完全依据显示定义的不同而不同,编译器不会做任何的动作去强行限制. (2)    方法 接口的方法都隐含为public和abstract:接口中不能有非抽象的方法,并且方法不能是static.final.以及protected和private

【转载】 vs2005视频教程 之 抽象类和接口 四 [视频]

原帖地址:http://www.cnblogs.com/thcjp/archive/2007/04/20/721587.html  首先要感谢 anytao.cnblogs.com ,因为下面总结这部分我是直接粘贴复制他的,呵呵! 3.1 相同点 都不能被直接实例化,都可以通过继承实现其抽象方法. 都是面向抽象编程的技术基础,实现了诸多的设计模式. 3.2 不同点 接口支持多继承:抽象类不能实现多继承. 接口只能定义抽象规则:抽象类既可以定义规则,还可能提供已实现的成员. 接口是一组行为规范:抽

C#中抽象类和接口的区别

一.抽象类: 抽象类是特殊的类,只是不能被实例化:除此以外,具有类的其他特性:重要的是抽象类可以包括抽象方法,这是普通类所不能的.抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆盖它们.另外,抽象类可以派生自一个抽象类,可以覆盖基类的抽象方法也可以不覆盖,如果不覆盖,则其派生类必须覆盖它们. 二.接口: 接口是引用类型的,类似于类,和抽象类的相似之处有三点: 1.不能实例化: 2.包含未实现的方法声明: 3.派生类必须实现未实现的方法,抽象类是抽象方法,接口则是所有成员(不仅是方法包括

深入理解抽象类和接口

抽象类和接口是对于面向对象中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才具有了强大的面向对象能力.abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进行抽象类定义时对于abstract class和interface的选择显得比较随意.其实,两者之间还是有很大的区别的,对于它们的选择甚至反映出对于问题领域本质的理解.对于设计意图的理解是否正确.合理.本文将对它们之间的区别进行一番剖析,试图给开发者提