java向上造型编译器怎么做的
1. java中 向上造型是什么概念是向上转型么 什么情况下用
class A {}
class B {} extend A
B b1 = new B();
A a1 = new B();
b1 = a1;
这被称作向上造型。
2. java向上造型的意义
那个你做的例子都有误导性的,你用Person来试试,Person里面有一个方法:eat(),你分别声明三个类:man,woman,notmannotwoman来继承这个类,并复写里面的方法,好了,现在我要在测试类里面写一个方法,只传进一个参数,可以调用三个对象的复写的eat(),你该怎么办? 现在,向上转型就出来了,太他妈的聪明了,你myMethod(Person obj){ obj.eat()}, 你分别传进三个对象:man,woman,notmannotwoan的,好了,你猜对了,调用的都是复写之后的,各个类里面的方法
3. java向上造型
正确的有 P0=P1 P0=P2 P4=P2 只要创建对象没错 就直接看引用,谁是爸爸谁在左边等着儿子赋值就行了。
4. JAVA常用编译器,教程
编译器当然是 eclipse~~
http://www.eclipse.org/downloads/
再加上 Myeclipse
http://www.myeclipseide.com/Downloads%2Bindex-req-viewsdownload-sid-15.html
教程已经发到你邮箱了!
其实最好的教程就是多写代码!多出错,自然以后知道的就更多!
5. java语言编译器是怎样编写的,源代码是什么
编译器本身就是一个应用程序,编译器涉及到底层的一些操作,对执行要求比较高的地方使用汇编语言编写的,主要的还是用C语言来编写实现的,在Java的安装路径下的bin目录下有很多的*.exe可执行文件,像jar.exe、javac.exe、java.exe等等,Java编译器这东西它好像不是开源的,如果你对编译器的实现感兴趣的话,推荐你看一本《编译原理》这本书,这本书对你了解编译器的实现原理有很大的帮助的。
6. java向上造型有什么作用为什么要造型,有什么效果
向上造型:父类的引用指向子类的对象。
向上造型可以大大提高程序的可扩展性。利于代码维护。
面向对象的三大特性:封装;继承;多态。向上造型可以看做多态的一种体现。即允许一种类型有不同的实现(可以理解为事物存在的多种体现形态)。
典型应用:接口。
没有什么效果,只是是代码精简而已
7. 我想用JAVA做个简易编译器,说说思路,或者有没有现成的代码JAVAC的代码有吗
要写编译器?自己开发语言?很牛X,先赞一个!
自己写编译器,原理其实不难,就那么点东西。找一个编译原理看明白就OK了,词法、语法、语义、语境。
这些东西用一些自动机,图灵机,范式,正规之类的就可以搞定。分析嘛,什么逆波兰,树形,一共也没几种的。
但最难做的是优化,还有机器代码生成这二部分。
优化怎么做?你的中间代码放哪?先优化还是先生成中间代码?
机器代码怎么搞?用汇编?还是直接和机器特性相关?
反正这二点我是晕,虽然原理还是那点东西,但真搞起来,我一点思路都没有。。。
国内写编译器的有,但都不是很牛X。
想要写好,还得多看E文资料。
加油吧。
8. java中,向上造型,必须要实现接口吗
接口(interface )
如果一个抽象类中的所有方法都是抽象的,就可以将这个类用另外一种方式来定义,也就是接口定义。
接口是抽象方法和常量值的定义的集合,从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现
可以使用extends来继承接口的常量和抽象方法,但它与类中的extends不同,它可以继承有多个父接口(多重继承),各父接口间用逗号隔开。
接口中的所有常量必须是public static final,方法必须是public abstract,这是系统默认的,不管你在定义接口时,写不写修饰符都是一样的
定义接口
修饰符 interface 接口名 [extends 父接口列表]
{
常量域声明
抽象方法声明
}
class cat implements Animal
{
public void shout ()
{
int(“喵喵”);
}
}
实现接口
implements
一个类可以实现若干个接口
非抽象类必须实现所有的抽象方法
interface prt
{
public void prtln();
}
class A implements prt{
int a = 3;
public void prtln()
{
//输出a;
}
}
class B implements prt{
int b = 4;
public void prtln()
{
//输出b;
}
}
public class MyInterfaceDemo
{
public static void dost(prt c)
{
tln();
}
public static void main(String[] args)
{
A a1 = new A();
B b1 = new B();
st(a1);
st(b1);
}
}
9. 用java做一个java的编译器
Javac编译器读取Java源代码,并将其编译成字节代码,说的直白一点就是把java语言翻译成计算机可以识别的二进制代码。
java的编译器有很多种,有sun公司的jdk,有oracle的jdk,还有其他一些公司的,多采用sun公司的jdk。
java同时需要集成开发环境,它集成了java的编译器,让我们不必通过命令行来编译java类文件,通过它我们可以快速的开发我们需要的程序。目前用的比较多的集成开发环境有eclipse和myeclipse,eclipse有很多具有针对性的版本来应对不同的开发,而myeclipse则是相对来说功能比较全面,当然也需要购买,个人建议myeclipse。
10. java里面的向上造型是什么_抽象类和接口有什么关系c++里面的虚函数是java里面的接口
向上造型一个泛型对象的引用
例如,假设我们有很多箱子,每个箱子里都装有不同的水果,我们需要找到一种方法能够通用的处理任何一箱水果。更通俗的说法,A是B的子类型,我们需要找到一种方法能够将C<A>类型的实例赋给一个C<B>类型的声明。
为了完成这种操作,我们需要使用带有通配符的扩展声明,就像下面的例子里那样:
List<Apple>apples=newArrayList<Apple>();
List<?extendsFruit>fruits=apples;
“? extends”是泛型类型的子类型相关性成为现实:Apple是Fruit的子类型,List<Apple> 是 List<? extends Fruit> 的子类型。
JAVA中抽象类与接口是java语言中对抽象概念进行定义的两种机制。
我们都知道在面向对象的领域一切都是对象,同时所有的对象都是通过类来描述的,但是并不是所有的类都是来描述对象的。如果一个类没有足够的信息来描述一个具体的对象,而需要其他具体的类来支撑它,那么这样的类我们称它为抽象类。比如new Animal(),我们都知道这个是产生一个动物Animal对象,但是这个Animal具体长成什么样子我们并不知道,它没有一个具体动物的概念,所以他就是一个抽象类,需要一个具体的动物,如狗、猫来对它进行特定的描述,我们才知道它长成啥样。
接口是一种比抽象类更加抽象的“类”。这里给“类”加引号是我找不到更好的词来表示,但是我们要明确一点就是,接口本身就不是类。 接口是用来建立类与类之间的协议,它所提供的只是一种形式,而没有具体的实现。同时实现该接口的实现类必须要实现该接口的所有方法,通过使用implements关键字,他表示该类在遵循某个或某组特定的接口,同时也表示着“interface只是它的外貌,但是现在需要声明它是如何工作的”。
区别如下:
在语法层次,java语言对于抽象类和接口分别给出了不同的定义。
抽象层次不同。抽象类是对类抽象,而接口是对行为的抽象。抽象类是对整个类整体进行抽象,包括属性、行为,但是接口却是对类局部(行为)进行抽象。
跨域不同。抽象类所跨域的是具有相似特点的类,而接口却可以跨域不同的类。
设计层次不同。对于抽象类而言,它是自下而上来设计的,我们要先知道子类才能抽象出父类,而接口则不同,它根本就不需要知道子类的存在,只需要定义一个规则即可。
C++的虚函数和JAVA的interface
Java中的interface实现了函数多态性,并且实现了完全抽象的类。在这里还要提一下引用。因为interface实现了完全抽象的类,在接口中定义的方法完全看不到任何实现,而且也不能有任何的实现,接口中声明的类必须在引用其的类中实现。而多态性的实现正是通过不同引用中的不同的方法实现。
C++中的虚函数也和Java中接口类似,C++中的虚函数同样是将接口和实现分离,从而实现多态性。为了使用多态性,需要在基类中使用virtual来声明虚函数。所以,虚函数是在基类中定义,在其子类中重写实现,也可重写基类的函数。在使用虚函数的的时候,需要定义基类的指针来使用虚函数,否则就失去了虚函数的意义。
其实两者都是为了实现多态性而存在,都需要通过继承来实现,只是Java中称为引用,与C++中的继承也是大同小异。