1.请说出作用域public,private,protected,以及不写时的区别。
作用域 | 当前类 | 同一包 | 子孙类 | 其他包 |
public | yes | yes | yes | yes |
protected | yes | yes | yes | no |
friendly | yes | yes | no | no |
private | yes | no | no | no |
不写的时候,默认为friendly。
2.Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
答:overload叫做重载,就是指在一个类中可以有多个方法的名字相同,但是参数类型,个数不能相同,返回类型可以相同,也可以不同,这也是多态性的一种表现。
override叫做重写,是针对于继承而言的,在java中,子类可以原封不动地继承父类的方法(super继承),也可以对其进行一定的修改,这样的修改就叫做重写。
3.构造器Constructor是否可被override?
答:因为constructor不能被继承,所以不适用于重写。
4.接口是否可继承接口? 抽象类是否可实现(implements)接口?抽象类是否可继承具体类(concrete class)? 抽象类中是否可以有静态的main方法?
答:接口可以继承接口,相当于a接口扩展了b接口的内容。抽象类可以实现接口。抽象类可以继承具体类。抽象类可以有静态方法。
普通类与抽象类的唯一两个区别是:抽象类不能实例化对象;普通类不能有abstract方法。
接口是抽象类的一个特例。
5.写clone()方法时,通常都有一行代码,是什么?
答:是super.clone(),因为首先要把父类中的成员复制到位,然后才是复制自己的成员。
关于clone参考:http://ttitfly.iteye.com/blog/155422