java可以实现c语言的模板功能吗

作者&投稿:在婉 (若有异议请与网页底部的电邮联系)
是不是java语言编程能实现的c语言都可以实现。~

java能实现面对切面编程,C语言能实现吗?
java能实现分布式计算程序,C语言能实现吗?
java能实现一处开发随处运行,C语言能实现吗?
java能实现依赖注入控制反转,C语言能实现吗?
java能实现web工程,C语言能实现吗?
java能实现分布式系统基础架构,C语言能实现吗?
...
是的,只要你够叼,C语言都能实现,只是说在明显有很容易的路的情况下很难很怪的路没人会去走而已。

我用自己的理解来讲得通俗一点吧
C语言可以用一个指针值指向内存的任何一个空间,当然有很多非法的空间会被检测出来,所有乱用指针,编译器或者系统就会报错。
但JAVA不同,JAVA 通过一个引用,来指向内存的一个空间,换句话说,不是你想指向哪里,就指向哪里,因为你定义个变量时,这个空间由系统分配,同样,你定义一个引用,这个空间同样由系统分配,而我们做的事情只是将这两个由系统分配的空间进行一个指向关联,没有一个随心所欲的内存指向
区别很明显吧,我相信这样解释,连一个没有任何C基础的人都能明白,呵呵,因为这是我第一次做任务来答题,所以详细一点,也啰嗦一点,如果还不明白,我们可以进一步交流。

1、java是纯面向对象的语言(main都是写到类里的),所以没有原生的模板功能。

2、使用“模板模式”可以实现类似的效果,这也是java里最常用的模式之一。

以下是一篇教程:

模板方法模式的结构

模板方法模式是所有模式中最为常见的几个模式之一,是基于继承的代码复用的基本技术。

模板方法模式需要开发抽象类和具体子类的设计师之间的协作。一个设计师负责给出一个算法的轮廓和骨架,另一些设计师则负责给出这个算法的各个逻辑步骤。代表这些具体逻辑步骤的方法称做基本方法(primitive method);而将这些基本方法汇总起来的方法叫做模板方法(template method),这个设计模式的名字就是从此而来。

模板方法所代表的行为称为顶级行为,其逻辑称为顶级逻辑。模板方法模式的静态结构图如下所示:

这里涉及到两个角色:

抽象模板(Abstract Template)角色有如下责任:

■  定义了一个或多个抽象操作,以便让子类实现。这些抽象操作叫做基本操作,它们是一个顶级逻辑的组成步骤。

■  定义并实现了一个模板方法。这个模板方法一般是一个具体方法,它给出了一个顶级逻辑的骨架,而逻辑的组成步骤在相应的抽象操作中,推迟到子类实现。顶级逻辑也有可能调用一些具体方法。

具体模板(Concrete Template)角色又如下责任:

■  实现父类所定义的一个或多个抽象方法,它们是一个顶级逻辑的组成步骤。

■  每一个抽象模板角色都可以有任意多个具体模板角色与之对应,而每一个具体模板角色都可以给出这些抽象方法(也就是顶级逻辑的组成步骤)的不同实现,从而使得顶级逻辑的实现各不相同。

源代码

抽象模板角色类,abstractMethod()、hookMethod()等基本方法是顶级逻辑的组成步骤,这个顶级逻辑由templateMethod()方法代表。

public abstract class AbstractTemplate {
    /**
     * 模板方法
     */
    public void templateMethod(){
        //调用基本方法
        abstractMethod();
        hookMethod();
        concreteMethod();
    }
    /**
     * 基本方法的声明(由子类实现)
     */
    protected abstract void abstractMethod();
    /**
     * 基本方法(空方法)
     */
    protected void hookMethod(){}
    /**
     * 基本方法(已经实现)
     */
    private final void concreteMethod(){
        //业务相关的代码
    }
}

具体模板角色类,实现了父类所声明的基本方法,abstractMethod()方法所代表的就是强制子类实现的剩余逻辑,而hookMethod()方法是可选择实现的逻辑,不是必须实现的。

public class ConcreteTemplate extends AbstractTemplate{
    //基本方法的实现
    @Override
    public void abstractMethod() {
        //业务相关的代码
    }
    //重写父类的方法
    @Override
    public void hookMethod() {
        //业务相关的代码
    }
}

模板模式的关键是:子类可以置换掉父类的可变部分,但是子类却不可以改变模板方法所代表的顶级逻辑。

每当定义一个新的子类时,不要按照控制流程的思路去想,而应当按照“责任”的思路去想。换言之,应当考虑哪些操作是必须置换掉的,哪些操作是可以置换掉的,以及哪些操作是不可以置换掉的。使用模板模式可以使这些责任变得清晰。




java自学要多久
ava是一门面向对象的高级编程语言,不仅吸收了C语言的各种优点,还摒弃了C里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。Java具有简单性、面向对象、分布式、健...

C语言和java哪个比较基础
C语言和比ava基础,因为2者虽同属于高级编程语言,但是c语言还是要比较基础一些,学起来上手也快,语法结构比java简单些。1、其中C语言主要特点:其是一个有结构化程序设计、具有变量作用域(variable scope)以及递归功能的过程式语言。C语言传递参数均是以值传递(pass by value),另外也可以传递指针(...

我想学习程序语言,请问是J学习AVA语言好还是C语言好呀!
第一,c 有个指针难得弄,第二,学java直接就可以感受面象对象的概念,第三,学c主要用于编写系统软件等等,对于新手很难实践,而学习java能够自己尝试做一些小的软件,并且稍微有一点基础知识还可以同时稍稍看点jsp写点简单的网页等等.纯属个人理解,希望不要见笑于大方之家,只是一个见议,顶楼的应当自己有自...

ava 怎么用命令
游戏命令 Z X C 分别对着不同的命令 当你有队长的时候 按C 1 然后可以制定目标方向(目标字母可以按TAB查看)

AVA挑衅语言在游戏里怎么发,?
进入战斗 "Z""X""C"“1--9”为信息 先按 Z 到 1到9 试试吧

绿色字部分,这个C语言程序,怎么样做呀!
float ava;};int main(){ stu class1[5];cout << "请输入一班学生信息(学号、姓名、数学成绩、语文成绩):" << endl;for (int i = 0; i < 5; i++){ cin >> class1[i].num >> class1[i].name >> class1[i].maths >> class1[i].chinese;class1[i].ava = (class1[...

ava中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop...
两个C ORBA,DCOM,可以在多语言写对象之间的通信。 RMI只限于Java实现对象之间的通信。很显然,这是一个制约因素。 RMI是非常简单的使用。 RMI开发人员可以使用Java来设计的协议规范。因此,在语言的功能,可以进行无缝的。 写一个的DCOM服务器处理只有两三个客户端,是相当简单的。然而,建立一个高效的处理数百成千...

ava中怎么说话
你是说语音吗?AVA中是不能进行语音聊天的,想语音的话先加入战队,再下个歪歪聊天软件,进入你加的战队的频道就可以语音了。YY这软件很多战队都用。

c语言输出n个成绩中小于平均值并且最接近平均值的数.
ava = count\/n;for(i=0 ;i<n ;i )if(a[i]<ava)\/\/因为排过序,所以只要小于平均值,肯定更接近平均值,所以更新 ans = a[i];else\/\/如果大于平均值,说明已经找到,就可以退出了 break;cout<<"平均值是:"<<ava<<endl<<"答案是:"<<ans<<endl;return 0;} 如果我的回答解决了你...

用C语言求平均数,尽量用简单的程序和结构解答
include"stdio.h"int main(){ int score1,score2,score3,score4,score5; float ava; printf("按从大到小的顺序输入5个0~100之间的整数:\\n"); scanf("%d %d %d %d %d",&score1,&score2,&score3,&score4,&score5); ava = (score2 + score3 + score4) \/ 3; printf("...

滨湖区13273653557: 在java中怎么实现C语言中的%(模)功能啊? -
百昭银耳: 和C语言一样的语法:int result = x%y;

滨湖区13273653557: C++和JAVA的区别? -
百昭银耳: Java程序中的每个变量要么是基本数据类型(boolean, char, byte, short, int, long, float, double),要么是对对象的引用C++有许多种基本类型,额外还有struct, union, enum, 数组和指针,C++指针可以指向对象,也可以不指向对象Java没有枚...

滨湖区13273653557: java能嵌入c语言吗? -
百昭银耳: Java可以通过JNI来调用执行本地方法,例如C 你可以参考这个http://baike.baidu.com/view/1272329.htm

滨湖区13273653557: Java如何调用C语言代码 ? -
百昭银耳: 要在java中调用c语言的库,需要使用Java提供了JNI. 举例说明 在c语言中定义一个 void sayHello()函数(打印Hello World);然后在Java中调用这个函数显示Hello Word. 现在分别从Java和C语言两部分说明: 1. Java 部分 首先定义一个...

滨湖区13273653557: Java如何调用C语言代码 ?
百昭银耳: Java Native Interface(JNI)是Java语言的本地编程接口,是J2SDK的一部分.在java程序中,我们可以通过JNI实现一些用java语言不便实现的功能.通常有以下几种情况我们需要使用JNI来实现. 标准的java类库没有提供你的应用程序所需要的功...

滨湖区13273653557: java可以编写c语言编译器吗 -
百昭银耳: 可以的,c也可以写java的

滨湖区13273653557: 一个软件,可以用两种语言编程吗? -
百昭银耳: 1、像c语言和c++这种,天生融洽,可以混搭开发,不过意义不大. 2、由于各种语言的开发环境不同,所以在一份源代码里使用不同语言是不可能的,编译不会通过. 3、虽然不能在一份源代码里使用不同语言,但是可以分开使用,例如,一个软件要实现的功能分模块有2个,其中一个模块所实现的功能适合c语言编写,而另一个模块所实现的功能更适合用java来编写,那么用c语言写一块,用java写一块,再用一个主程序链接起来就行了.或者是使用c语言写成dll、com等方式,再由java去调用.这些都可以.真正大型的软件开发都不会局限与一种语言,一般都是混搭开发,例如操作系统一般都是c语言和汇编混合开发的产物.

滨湖区13273653557: JAVA和C++有什么不同,JAVA可以代替C语言吗?
百昭银耳: Java,是一种可以编写跨平台应用软件的面向对象的程序设计语言,由升阳(太阳微电子,Sun Microsystems)公司的詹姆斯·高斯林(James Gosling)等人于1990年代...

滨湖区13273653557: 如何在java中实现c语言中的联合的功能??? -
百昭银耳: 用类, 只有这样.class DateE{ long ul[2]; int ui[4]; byte uc[8];//get/set方法 } java没有 unsigned long,如果数很大就换成BigDecimal ,或 BigInteger

滨湖区13273653557: c /c++ ,java 之间有什么区别? -
百昭银耳: 区别太多.先列几条吧.1. c是面向过程的语言.c++和Java都是面向对象的.在c中没有类或者对象的概念.2. java运行在虚拟机上,号称与平台无关.也就是你开发的java程序无论是unix,linux还是windows都可以正常运行.但是实际上这是一个...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网