1、 抽象类和接口的区别?
1 答:○、抽象类在 Java 语言中表示一种继承关系,一个类只能使用一次继承关系。但是, 一个类却可以实现多个接口。 2 ○、在抽象类中可以有自己的数据成员,也可以有非抽象类的成员方法,而接口中,只 能有静态的不能被修改的数据成员(即成员属性必须是 static final 的,但接口中一般不定义 数据成员) ,所有的成员方法都是抽象的。 3 ○、抽象类和接口所反映的设计理念不同。抽象类表示“is-a”关系,接口表示“like-a” 关系。 4 ○、实现抽象类和接口的类必须实现其中的所有方法。抽象类中可以有非抽象方法;接 口中不能有实现方法。 5 ○、接口中定义的变量默认是 public static final 型,必须给其赋初值,所以实现类中不 能重新定义,也不能改变其值。抽象类中的变量默认是友好型(friendly) ,其值可以在子类 中重新定义,也可以重新赋值。 6 ○、接口中的方法默认都是 public,abstract 类型的。
2、 在
Java 中一个类被声明为 final 类型,表示了什么意思?
答:如果一个类被声明为 final,意味着它不能再派生出新的子类,不能作为父类被继承。 因此一个类不能既被声明为 abstract 的,又被声明为 final 的。 (扩展:将变量或方法声明为 final,可以保证它们在使用中不被改变。被声明为 final 的变量必须在声明时给定初值,而 在以后的引用中只能读取,不可修改。被声明为 final 的方法也同样只能使用,不能重载。 )
3、 Error 与 Exception 有什么区别?
答: Error(错误)表示
系统级的错误和程序不必处理的异常, java 运行环境中的内部错误或 是 者硬件问题,比如,内存资源不足等,对于这种错误,程序基本无能为力,除了退出运行外 别无选择。Exception(违例或异常)表示需要捕捉或者需要程序进行处理的异常,它处理的是 因为程序
设计的瑕疵而引起的
问题或者外在的输入等引起的一般性问题, 是
程序必须处理的
4、 Overload 和 Override 的区别。 Overloaded 的方法是否可以改变返回值 的类型?
答:Overload 表示重载,Override 表示覆盖或重写。重载(Overload)表示同一个类中可以 有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同) 。重写 (Override)表示子类中的方法可以与父类中的某个方法的名称和参数完全相同,通过子类 创建的实例对象调用这个方法时, 将调用子类中的定义方法, 这相当于把父类中定义的那个 完全相同的方法给覆盖了,这是面向对象编程的多态性的一种表现。 如果几个 Overloaded 的方法的参数
列表不一样,它们的返回值类型当然也可以不一样。 如果两个方法
的参数列表完全一样,通过让它们的返回值不同来实现重载 Overload 是不行 的。
5、接口是否可以继承接口?抽象类是否可以实现(implements)接口?抽象类是 否可以继承实体类(concrete class)?
答:接口不可以继承接口,接口之间有类似继承的关系,但是严格说成是继承是不对的,因 为接口是要被实现而不是被继承的。抽象类可实现接口。抽象类可以继承实体类,但是要求 实体类必须有明确的构造函数。
6、构造器 Constructor 是否可被 override?
答:构造器 Constructor 不能被继承,因此不能重写 Override,但可以被重载 Overload。
7、是否可以继承 String 类?
答:string 类是 final 类故不可以继承。
8、try {}里有一个 return 语句,那么紧跟在这个 try 后的 finally {}里的 code 会
不会被执行,什么时候被执行,在 return 前还是后?
答:会执行,在 return 前执行。
9、swtich 是否能作用在 byte 上,是否能作用在 long 上,是否能作用在 string 上?
答:switch(expr1)中,expr1 是一个整数表达式。因此传递给 switch 和 case 语句的参数 应该是 int、 short、 char 或者 byte。但是 long,string 都不