类的组成:
Java中的类,包括属性和要领。属性即类中的变量,可分静态变量、实例变量(全局变量)、局部变量(存在于要领中,声明周期仅限于该要领的挪用阶段)
C#中的类,包括字段、属性和要领。字段对应java中的属性,C#中的属性对象java中的get和set接见器,是对字段的封装,要领一样,都是形貌行动。
类成员的挪用:
实例成员由对象挪用。静态成员由类挪用。然则在java中静态成员也能够被实例挪用,相称于班上的每一个门生都能够恣意的安排班费了,很不好的一个题目。C#在这方面严厉限定了,静态成员只能有类举行挪用。
三大特征-封装
封装:为了隐蔽内部的完成细节,到达对数据安全性的庇护和代码重用的结果的一种手腕。
封装无处不在,看似简朴却可无穷延长。并没有一个明白的关键字来示意封装。既然是头脑,是手腕,一切在java中和c#中是没有语法区分的。仅仅是他们在借助接见润饰符来到达封装的结果时,两种言语的接见润饰符是不一样的。
Java中:
private:私有的,仅内部能够接见
dufault:默许的,统一包的内部能够接见。
protected:受庇护的,统一包中或许是差别包的子类中能够接见。
public:大众的,任何地方能够接见。
特性:有明白的大小统属关联:private < default < protected < public
C#中(引入递次集的观点。定名空间类似于java中的包,但它是逻辑分组差别于java中的包是物理分组,递次集类似于一个项目):
private:私有的,仅内部能够接见。
intenal:内部的,统一递次集的内部能够接见,同default。
protected:受庇护的,子类中能够接见,和java中protected是差别的,此处局限要小些,同递次集的非子类不能接见。
proteted intenal:是intenal和protected接见局限的并集。
public:大众的,任何地方能够接见。
特性:没有明白的大小统属关联,intenal和protected的接见局限大小是分不清的。
三大特征-继续
继续:目标是为了让一个类具有另一个类的属性和要领。
Java中:运用extends示意运用继续
重写的请求:a、要领名、返回值范例、参数雷同;b、接见润饰符接见局限要大于或即是父类要领接见润饰符;
接见父类成员:运用super关键字,可运用super(参数);在组织要领中指定挪用父类一个组织要领。
C#中:运用:示意运用继续
重写的请求:a、要领名、返回值范例、参数、接见润饰符雷同;b、父类要领被virtual润饰,子类要领被override润饰
接见父类胜利:运用base关键字,在组织要领后运用:base(参数);指定挪用父类组织要领,base不能运用在静态环境中,不能挪用父类静态成员。
掩盖:运用new关键字。在c#中引入掩盖的内容,对父类的非virtual要领,也就是不可重写的要领,运用掩盖,能够掩盖掉父类的要领。对掩盖我的意见是为了填补必需被virtual润饰的要领才重写这个限定能够带来的题目,然则能不必就不必,掩盖意义不大,或许说是我还没有逼真体会到掩盖的现实作用和运用场所,有高人能够批评解惑。
推断是不是重写胜利的依据:运用父类的援用指向子类的对象,如果该要领挪用的是父类要领申明重写不胜利,如果挪用到子类要领,申明重写胜利。
三大特征-多态
多态:统一种行动的多种存在形状。表现形式有:重载、重写。
重载请求:a、统一类中;b、要领名雷同;c、参数差别(参数个数、范例、递次)。
挪用时依据传入的参数来决议挪用到哪一要领。
笼统类和接口
笼统类:运用abstract润饰的类称为笼统类。
泉源:在我看来,笼统类的泉源是值得细致揣摩一下,有利于加深明白。现实生活中存在许多如许的题目,也就是我们晓得这一类事物都会做这个行动(要领),然则并不晓得它怎样去做,比方我们都晓得动物为动,然则每一个动物你不晓得它怎样去动。这个时刻定义这个Animal类时,就须要一个move要领,只要要领头(形貌会做什么事变),没有要领体(形貌怎样去做这件事变),那末这个要领比较迥殊,我们就标记为笼统要领,运用abstract润饰。
那末Animal类中有了笼统要领,如果你实例化了Animal类,当你挪用move要领时,会涌现什么样的题目呢?未知,由于它并没有形貌怎样去做。所以为了防止涌现这类未知的状况,比方把Animal类定义为笼统类,显著特性就是不能实例化。一个不能实例化的类,他的非静态成员是不可被挪用的,那末如许的类存在的意义在于什么呢?
所以总结:笼统类存在的意义在于被继续。笼统类是为了笼统要领而存在的,有组织要领却不能被实例化。语法上java和c#在这方面是一样的,不再细说。
接口:制订的一组划定规矩和范例,让完成类都满足这个划定规矩和范例,在现实运用中能很大递次增添递次的灵活性。面向接口编程,我的明白也不是迥殊深,也不是我一两句能够讲清楚。有高人能够在后面贴贴本身的心得,进修进修。
区分:C#中,完成类如果没有完成接口中一切的要领,则比方把本身定义为笼统类而且把未完成的要领从新誊写一遍定义为笼统要领。
总结
一直以来是做java开辟的,教授教养的须要才进修c#,有相通的地方,学起来很快。这里仅仅关注语法,关于大牛们都在搞协定,搞底层,是看不上这个的。
以上就是比较C#和JAVA中面向对象语法的区分的细致内容,更多请关注ki4网别的相干文章!