题目
–来自《Java程序员面试宝典》
- 抽象类(abstract class) 与 接口 (interface)有什么异同
- 内部类有哪些
- 如何获取父类的类名
- this 与 super 有什么区别
- 变量命名有哪些规则
- break,continue 以及 return 有什么区别
- final finally finalize 有什么区别
- assert 有什么作用
- static 关键字的作用
- switch 注意事项
题目及答案
- 抽象类(abstract class) 与 接口 (interface)有什么异同
答:接口中所有的方法隐含的都是抽象的。而抽象类则可以同时包含抽象和非抽象的方法。
类可以实现很多个接口,但是只能继承一个抽象类
类可以不实现抽象类和接口声明的所有方法,当然,在这种情况下,类也必须得声明成是抽象的。
抽象类可以在不提供接口方法实现的情况下实现接口。
Java接口中声明的变量默认都是final的。抽象类可以包含非final的变量。
Java接口中的成员函数默认是public的。抽象类的成员函数可以是private,protected或者是public。
接口是绝对抽象的,不可以被实例化,抽象类也不可以被实例化。 - 内部类有哪些
答:内部类就是将一个类定义到另一个类的内部。主要有4种:静态内部类,成员内部类,局部内部类,匿名内部类。静态内部类与静态方法类似,符合静态方法的特点。去掉static的内部类叫做成员内部类,与普通方法使用类似。将成员内部类放到外部类的方法中是就是局部内部类。作用域也和方法内部的局部变量相同。匿名内部类必须要在 new 的后面且匿名类必须实现接口或者继承一个类。匿名类不能有构造函数,静态成员,方法,类。 - 如何获取父类的类名
答:Java提供 getClass().getName()方法获取当前的运行类的类名(一定是当前运行类的类名)。使用super.getClass().getName()获取的还是当前的类名。所以获取父类只能通过反射机制 getClass().getSuperclass().getName()获取父类名了。 - this 与 super 有什么区别
答:this 指向当前类的实例 ,super指向父类的实例。this的典型使用就是setter 和 getter 方法。super常用到获取父类的成员方法或变量。当子类构造函数需要显示的调用父类构造函数时,必须显示的声明在第一条语句。 - 变量命名有哪些规则
答:Java的变量名必须由字母或数字或下划线或美元符组成。开头必须是字母或下划线或美元符。 - break,continue 以及 return 有什么区别
答:break 结束当前层的循环,嵌套到内层只能结束当前内层循环;continue 结束本次直接跳到下一次循环。return 直接返回结构,任何循环都终止。 - final finally finalize 有什么区别
答:final 声明 类,方法 ,变量,并保证其内存指向的不可变性,具体可转一文读懂 final。finally只能出现在异常执行的代码块try/catch中。放到异常的最后块,无论执行try或者catch都会进入finally块,常用与关闭文件流,断开连接等。finalize 是 Object 类的一个方法,垃圾回收器调用 被回收对象的finalize() 方法。 - assert 有什么作用
答: - static 关键字
答:一文搞懂static - switch 注意事项
答: