没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|其它|编辑:郝浩|2009-10-30 15:08:26.000|阅读 618 次
概述:JAVA与C#都是面向对象的语言,它们都有各自的抽象类,都能实现多态性。
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
JAVA与C#都是面向对象的语言,它们都有各自的抽象类,都能实现多态性。
一、在JAVA中实现学生和老师打招呼的代码
import java.util.ArrayList;//导入ArrayList集合类
/**
抽象父类Person
*/
abstract class Person
{
String name;//姓名
int age;//年龄
Person(String name,int age)
{
this.name=name;
this.age=age;
}
//抽象方法sayHi()由子类来实现
abstract void sayHi();
}
/**
学生类继承了Person也就继承了父类的属性
父类中含有抽象方法因此在子类中要重写父类的抽象方法
*/
class Student extends Person
{
String hobby;//附加属性,爱好
Student(String name,int age,String hobby)
{
super(name,age);
this.hobby=hobby;
}
/**
重写父类中的sayHi()方法
*/
void sayHi()
{
System.out.println("大家好,我是"+name+"同学,今年"+age+"岁了,我喜欢"+hobby);
}
}
/**
教师类继承Person
重写抽象父类Person中的抽象方法sayHi()
*/
class Teacher extends Person
{
int yearOfService;//附加属性,工作年限
Teacher(String name,int age,int yearOfService)
{
super(name,age);
this.yearOfService=yearOfService;
}
/**
重写父类中的sayHi()方法
*/
void sayHi()
{
System.out.println("大家好,我是"+name+"老师,今年"+age+"岁了,我已经工作了"+yearOfService);
}
}
/**
测试类
*/
class PersonTest
{
public static void main(String[] args)
{
//生成泛型集合对象
ArrayList persons = new ArrayList();
//生成学生对象
Student student = new Student("张三",22,"唱歌");
//生成教师对象
Teacher teacher = new Teacher("李四",44,10);
//将学生和教师添加到泛型集合对象中,自动将student和teacher上溯造型为Person对象
persons.add(student);
persons.add(teacher);
//遍历集合
for(int i=0;i
{
persons.get(i).sayHi();
}
}
}
二、在C#中实现学生和老师打招呼的代码
using System;
using System.Collections.Generic;
using System.Text;
namespace Person
{
///
/// 抽象父类Person
///
abstract class Person
{
public Person(string name,int age)
{
this.Name = name;
this.Age = age;
}
//姓名
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
//年龄
private int age;
public int Age
{
get { return age; }
set { age = value; }
}
///
/// 抽象方法SayHi()将在子类中被重写
///
public abstract void SayHi();
}
///
/// 子类Student继承抽象父类Person,重写抽象方法SayHi()
///
class Student : Person
{
public Student(string name, int age, string hobby)
:base(name,age)
{
this.Hobby = hobby;
}
//附加属性,爱好
private string hobby;
public string Hobby
{
get { return hobby; }
set { hobby = value; }
}
///
/// 重写父类中的SayHi()方法
///
public override void SayHi()
{
string message = string.Format("大家好,我是{0}同学,今年{1}岁了,我喜欢{2}。",this.Name,this.Age,this.Hobby);
Console.WriteLine(message);
}
}
///
/// 子类Teacher继承抽象父类Person,并实现抽象方法SayHi
///
class Teacher : Person
{
public Teacher(string name,int age,int yearOfService)
:base(name,age)
{
this.YearOfService = yearOfService;
}
//工作年限
private int yearOfService;
public int YearOfService
{
get { return yearOfService; }
set { yearOfService = value; }
}
public override void SayHi()
{
string message = string.Format("大家好,我是{0}老师,今年{1}岁了,我已经工作{2}年了。",this.Name,this.Age,this.YearOfService);
Console.WriteLine(message);
}
}
class Program
{
static void Main(string[] args)
{
//实例化泛型集合对象
List persons = new List();
//生成学生对象
Student student = new Student("张三", 22, "唱歌");
//生成教师对象
Teacher teacher = new Teacher("李四", 44, 10);
//将学生和教师添加到泛型集合对象中,自动将student和teacher上溯造型为Person对象
persons.Add(student);
persons.Add(teacher);
//遍历集合
for (int i = 0; i < persons.Count; i++)
{
persons[i].SayHi();
}
Console.ReadLine();
}
}
}
由上面用两种语言编写的程序可以看出,它们都很相似,都实现了同一个功能就是学生和老师打招呼介绍自己的行为。它们都用到了抽象类,在子类中都重写了抽象父类中的抽象方法,都用到了泛型集合,也都表现出了面向对象的特性之一-多态性。
只不过这两种语言在语法上有许多不同之处。
1、 继承
在JAVA中继承使用关键字extends,而在C#中继承使用符号:。
2、 调用父类的构造方法(构造函数)
在JAVA中在子类的构造方法中使用super(参数列表)来调用父类的构造方法,而在C#中在子类后面加上:base(参数列表)。
3、 重写父类的抽象方法
在JAVA中,只需要在子类中重写父类的抽象方法即可,而在C#中需要在这个重写的抽象方法前加上关键字override以表明该方法重写了父类的方法。
4、 属性
在JAVA中只有属性,而在C#中除了有属性,还有字段,并且字段设为私有变量,通过属性给这个私有变量赋值,这样做的好处就是加强了对数据的校验,保证了数据的安全性,其实在JAVA中可以通过定义set方法和get方法来实现,只不过在C#中,微软增加了属性,并在属性中又增加了set访问器和get访问器。
5、 命名规范
在JAVA中,变量名和方法名全部采用Camel命名法,类名和构造方法名采用Pascal命名法;而在C#中私有成员采用Camel命名法,而公有成员采用Pascal命名法。
6、 对属性的操作
在JAVA中一般将属性设为私有成员,不允许用户直接对属性操作,而在C#中因为
在属性中增加了访问器,因此可以对属性直接进行操作,这样做的好处之一就是提高了性能。
7、 对集合的访问
在JAVA中对集合中对象的访问一般通过get方法来获得集合中的元素,而在C#中
可以直接通过索引器来直接访问集合中的元素,这样做的好处主要是为了方便用户访问提高程序的性能。
还有其他很多不同之处这里就不再一一阐述。
这两种语言的相同之处:
1. 都实现了面向对象的三大特性-继承、封装、多态。
2. 都使用到了最流行的技术:泛型集合。
JAVA的优势:
1. 可以实现跨平台操作,在手机程序开发方面占有很大的优势。
2. SUN公司提供的类库都是开源代码,这样就方便了开发人员开发程序。
3. 可以发挥程序员的创造性,为程序员带来成就感。
.NET的优势:
1. 可跨语言语言操作。(据说也可以实现跨平台,但我没试过,它应该还是在windows上的性能表现最佳)
2. 增加了很多特性,提高了性能,例如:属性、索引器等。
3. 微软提供的开发工具非常棒,操作简单容易上手。
.NET是在JAVA之后发展起来的,.NET作为小弟吸收借鉴了大哥的长处摒弃了其短处,并以高效便捷的开发工具和.NET框架吸引了一大批程序员,但让人感到不适的地方在于它将很多东西都封装起来,根本看不到其内部机制,有时候想改还不知道该如何改。JAVA作为大哥,也有许多要不断完善的地方。不过就做为教学而言,我想与C#.NET比较,JAVA更适合作为教学用语言,这样更容易帮助学生了解其内部机制。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com
文章转载自:IT专家网接DevExpress原厂商通知,将于近日上调旗下产品授权价格,现在下单客户可享受优惠报价!
面对“数字中国”建设和中国制造2025战略实施的机遇期,中车信息公司紧跟时代的步伐,以“集约化、专业化、标准化、精益化、一体化、平台化”为工作目标,大力推进信息服务、工业软件等核心产品及业务的发展。在慧都3D解决方案的实施下,清软英泰建成了多模型来源的综合轻量化显示平台、实现文件不失真的百倍压缩比、针对模型中的大模型文件,在展示平台上进行流畅展示,提升工作效率,优化了使用体验。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@evget.com
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢
慧都科技 版权所有 Copyright 2003-
2025 渝ICP备12000582号-13 渝公网安备
50010702500608号