标签:
1.final修饰变量时,是引用不能变,还是引用的对象不能变?
是指引用变量不能变,引用对象的内容可以变。
2.==和equals有什么区别?
网上搜索一下,发现很多人解释的都比较清楚了。自己简单概括一下。
==符号用于比较变量的值,如果是数值则直接比较就行,如果是引用类型,包括字符串类型,是比较引用对象的地址。但当比较String a= "Monday";String b ="Monday";if(a == b){System.out.println("a == b");}时是输出a == b的。下面的解释粘贴复制的。程序在运行的时候会创建一个字符串缓冲池当使用 s2 = "Monday" 这样的表达是创建字符串的时候,程序首先会在这个String缓冲池中寻找相同值的对象,在这个程序中,a先被放到了池中,所以在b被创建的时候,程序找到了具有相同值的 a,将b引用a所引用的对象"Monday".若使用Sting b = new String("Monday");就不会输出a==b了。因为此时变量值不同。
equals是比较两个对象是否相同的正确方法。但若想比较对象的内容是否相同,应该重写父类的equals函数,明确指出相等的条件。否则默认是比较对象的引用地址。但比较字符串类型时会和==有所不同,使用new创建时,也会输出相等。
3.overload 和override的区别是什么?overload的方法是否可以改变返回值的类型?
overload是重载,override是重写。
重载的方法名称相同,参数类型列表不同(参数顺序和类型),返回值可以相同可以不同,可以有不同的访问修饰符,可以抛出不同的异常,但返回值、修饰符、异常都不能决定这个方法是否是重载。
重写发生在子类中,重写的函数和父类的方法名,参数列表相同,返回值可以是父类返回值的子类,访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>default>private),重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常。
4.构造函数是否可以被override?
构造函数是不能被继承的,只能在子类初始化时调用,所以不存在重写问题,构造函数只能在一个类中被重载。
5.接口是否可以继承接口?抽象类是否可以实现接口?抽象类是否可继承具体类?抽象类中是否可以有静态的main方法?
接口可以通过继承创建新的子接口。抽象类可以实现接口
抽象类是否可继承具体类:抽象类是可以继承实体类,但前提是实体类必须有明确的构造函数
答案很明确,可以继承。其实从Object就是个实体类,java的API文档里,每个抽象类的条目里都明确写着直接或间接继承自Object,所以这点是没有疑问的。
关键在于这答案里所说的“前提是实体类必须有明确的构造函数”一句,是什么意思。
抽象类中可以包含静态的main方法。
6.如何实现多态机制?
多态时在运行时刻接口匹配的对象能互相替换的能力。它的关键是:运行时、接口匹配、天。它是一种后期绑定机制。
实现多态的步骤:继承,重写,针对父类编程,运行时,接口替换。
7.abstract class和interface有什么区别?
(1)接口中不能有构造方法。
(2)接口中没有普通成员变量,只有常量。
(3)接口中的方法必须都是抽象的,不能有非抽象的普通方法。
(4)接口中的抽象方法只能是public类型的,默认为public abstract类型。
(5)接口中不能包含静态方法。
(6)抽象类和接口中都可以包含静态成员变量。但接口中定义的变量只能是public static final 类型,并且默认为public static final 类型。
(7)一个类可以实现多个接口,但只能继承一个类。
8.抽象方法可以是static的吗?
标签:
原文地址:http://www.cnblogs.com/benbencoding798/p/4733800.html