java与c#中面向对象的不同实现

来源:互联网 发布:亿人围观网络春晚 编辑:程序博客网 时间:2024/05/21 07:48

 从面向对象的三大特点去考虑:

1。封装

 c#中的成员变量也叫字段,封装使用了一个新的形式来表示,个人认为用起来也非常方便,叫做属性。

标准的写法:通过getter和setter访问器来对成员变量进行封装。

如:private string _name;

  public string Name
    {
        get { return name; }
        set { name = value; }
    }

注:在属性的基础上还有索引器,用来操作数组或集合,非常方便,用法见msdn,讲解非常详细。

java中的成员变量叫属性,注意此属性非c#里的属性。相当于c#中的字段。封装方式很简单。

使用get和set方法进行封装。

    private String name;

    public void setName(String name)

   {

       this.name=name;

    }

    public String getName()

   {

       return this.name;

   }

2.继承。

继承的特点都是一样的。继承父类的属性和方法,构造方法除外,只允许单继承等。

只是实现方式不同。

c#里直接使用“:”来继承类或实现接口,继承的类写在前边。还有父类实例关键字是base.

 

如下:public class A : 父类,接口1,接口2               //继承类和实现接口

         public A():base()                                         //调用父类构造

 

java中继承关键字“extends” 实现接口关键字"implements",父类实例关键字"super".

 

如下:public class A extends 父类  implements   接口1,接口2

         public A()

         {

           super();                                    //放在第一行

         }

 

 

3。多态

 方法重载:通常在同一个类中,方法名一致,方法签名(参数列表)不同,包括参数类型,参数个数,参数顺序不同。返回值不能区分方法重载。

方法重写:在父类和子类之间,方法名一致,方法签名一致,返回类型一致。

c#中实现方法重写:父类中的方法必须声明为virtual(虚方法)或abstract(抽象方法),子类才能进行重写。重写时,用override关键字进行重写。

java中实现方法重写:父类中的方法默认都可以被重写。父类子类中不需要任何关键字,只要满足方法重写条件自动识别为重写。

 

 

4.访问修饰符也有所不同。

c#中:private, protected,internal,public ,protected internal

private  私有的,只可以被本类所存取。

protected  受保护的,只可以被本类和其继承子类存取。

internal  程序集级别的,通常其编译后的文件扩展名往往是“.DLL”或“.EXE”。

public   共有的,可以被任意存取。

protected internal  唯一的一种组合限制修饰符,它只可以被程序集内所有的类和这些类的继承子类所存取。

注:c#中类的默认访问级别为internal,字段、属性和方法的默认访问级别是private.

 

java中:private,default(默认),protected,public

private ,protected,public 同c#中的一致。

default  当前包内的所有类。

注:java中默认访问级别是default.

5.类的划分。

c#中使用命名空间(namespace)和java中的包(package)

区别是,c#中的命名空间是逻辑上的划分,java中的包是物理上的划分。

 

 

暂时只想到这么多。以后想到会继续完善。

 

 

                                    

 

 

 

 

原创粉丝点击