java面向对象带答案

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1.Super()和this()的区别This():当前类的对象,super父类对象,所有的资源都可以访问。Super():在子类访问父类的成员和行为,必须受类继承规则的约束,在构造函数中,如果第一行没有写super(),编译器会自动插入.但是如果父类没有不带参数的构造函数,或这个函数被私有化了(用private修饰).此时你必须加入对父类的实例化构造.而this()就没有这个要求,因为它本身就进行实例化的构造。2.请说出作用域public,private,protected,以及不写时的区别作用域当前类同一包(package)子孙类其他包(package)public√√√√protected√√√×friendly√√××private√×××3.java如何跳出当前的多重嵌套循环在Java中,要想跳出多重循环,可以在外面的循环语句前定义一个标号,然后在里层循环体的代码中使用带有标号的break语句,即可跳出外层循环,例如:ok:for(inti=0;i10;i++){for(intj=0;j10;j++){System.out.println(i+”*”+j+”=”+i*j);if(i==4){breakok;}}}4.Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?重载Overload表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同)重写Override表示子类中的方法可以与父类中的某个方法的名称和参数完全相同,通过子类创建的实例对象调用这个方法时,将调用子类中的定义方法,这相当于把父类中定义的那个完全相同的方法给覆盖了,这也是面向对象编程的多态性的一种表现。子类覆盖父类的方法时,只能比父类抛出更少的异常,或者是抛出父类抛出的异常的子异常,因为子类可以解决父类的一些问题,不能比父类有更多的问题。子类方法的访问权限只能比父类的更大,不能更小。如果父类的方法是private类型,那么,子类则不存在覆盖的限制,相当于子类中增加了一个全新的方法。Overloaded的方法的参数列表不一样,它们的返回者类型当然也可以不一样5.switch语句能否作用在byte上,能否作用在long上,能否作用在String上?在switch(expr1)中,expr1只能是一个整数表达式或者枚举常量(更大字体),整数表达式可以是int基本类型或Integer包装类型,由于,byte,short,char都可以隐含转换为int,所以,这些类型以及这些类型的包装类型也是可以的。显然,long类型不符合switch的语法规定,并且不能被隐式转换成int类型,所以,它不能作用于swtich语句中。Jdk7之后是可以用String的7.使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?使用final关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以改变的。例如,对于如下语句:finalStringBuffera=newStringBuffer(immutable);执行如下语句将报告编译期错误:a=newStringBuffer();但是,执行如下语句则可以通过编译:a.append(broken!);8.==和equals方法究竟有什么区别?==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作符。equals方法是用于比较两个独立对象的内容是否相同,就好比去比较两个人的长相是否相同,它比较的两个对象是独立的。9.静态变量和实例变量的区别?在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。10.构造器Constructor是否可被override?构造器Constructor不能被继承,因此不能重写Override,但可以被重载Overload。11.面向对象的特征有哪些方面封装,继承,多态12.java中实现多态的机制是什么?靠的是父类或接口定义的引用变量可以指向子类或具体实现类的实例对象,而程序调用的方法在运行期才动态绑定,就是引用变量所指向的具体实例对象的方法,也就是内存里正在运行的那个对象的方法,而不是引用变量的类型中定义的方法。13.abstractclass和interface有什么区别?含有abstract修饰符的class即为抽象类,abstract类不能创建的实例对象。含有abstract方法的类必须定义为abstractclass,abstractclass类中的方法不必是抽象的。abstractclass类中定义抽象方法必须在具体(Concrete)子类中实现,所以,不能有抽象构造方法或抽象静态方法。如果的子类没有实现抽象父类中的所有抽象方法,那么子类也必须定义为abstract类型接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的。接口中的方法定义默认为publicabstract类型,接口中的成员变量类型默认为publicstaticfinal。下面比较一下两者的语法区别:1.抽象类可以有构造方法,接口中不能有构造方法。2.抽象类中可以有普通成员变量,接口中没有普通成员变量3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。4.抽象类中的抽象方法的访问类型可以是public,protected和(默认类型,虽然eclipse下不报错,但应该也不行),但接口中的抽象方法只能是public类型的,并且默认即为publicabstract类型。5.抽象类中可以包含静态方法,接口中不能包含静态方法6.抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是publicstaticfinal类型,并且默认即为publicstaticfinal类型。7.一个类可以实现多个接口,但只能继承一个抽象类14.Strings=Hello;s=s+world!;这两行代码执行后,原始的String对象中的内容到底变了没有?没有。因为String被设计成不可变(immutable)类,所以它的所有对象都是不可变对象。在这段代码中,s原先指向一个String对象,内容是Hello,然后我们对s进行了+操作,那么s所指向的那个对象是否发生了改变呢?答案是没有。这时,s不指向原来那个对象了,而指向了另一个String对象,内容为Helloworld!,原来那个对象还存在于内存之中,只是s这个引用变量不再指向它了。15.数组有没有length()这个方法?String有没有length()这个方法?数组没有length()这个方法,有length的属性。String有有length()这个方法。16冒泡排序publicstaticvoidsort(int[]values){inttemp;for(inti=0;ivalues.length;i++){//趟数for(intj=0;jvalues.length-i-1;j++){//比较次数if(values[j]values[j+1]){temp=values[j];values[j]=values[j+1];values[j+1]=temp;}}}}

1 / 9
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功