答:在 Java 语言中,类主要是由方法和变量两部分组成。java
答:类是一个抽象的概念,是对某一事物的描述;而对象是类的实例,是实实在在存在的个体。好比,“人”就是一个类(一个概念),而老王就是实实在在的一个“对象”。编程
答:Java 中只能单继承,但能够实现多接口。ide
答:从技术的实现角度来讲,是为了下降编程的复杂性。假设 A 类中有一个 m() 方法,B 类中也有一个 m() 方法,若是 C 类同时继承 A 类和 B 类,那调用 C 类的 m() 方法时就会产生歧义,这无疑增长了程序开发的复杂性,为了不这种问题的产生,Java 语言规定不能多继承类,但能够实现多接口。函数
答:覆盖和重载的区别以下:this
A:方法的参数类型不一样 B:方法的返回值不一样 C:方法的参数个数不一样 D:方法的参数顺序不一样线程
答:Bcode
答:由于在方法调用时,若是不指定类型信息,编译器就不知道你要调用哪一个方法了。好比,如下代码:对象
float max(int x,int y); int max(int x,int y); // 方法调用 max(1,2);
由于 max(1,2)
没有指定返回值,编译器就不知道要调用哪一个方法了。继承
答:构造方法的特征以下:接口
答:构造函数能够重载,但不能覆盖。
A:类中的构造方法不能忽略 B:构造方法能够做为普通方法被调用 C:构造方法在对象被 new 时被调用 D:一个类只能有一个构造方法
答:C
class ExecTest { public static void main(String[] args) { Son son = new Son(); } } class Parent{ { System.out.print("1"); } static{ System.out.print("2"); } public Parent(){ System.out.print("3"); } } class Son extends Parent{ { System.out.print("4"); } static{ System.out.print("5"); } public Son(){ System.out.print("6"); } }
答:打印的结果是:251346
加载顺序以下:
class A { public int x = 0; public static int y = 0; public void m() { System.out.print("A"); } } class B extends A { public int x = 1; public static int y = 2; public void m() { System.out.print("B"); } public static void main(String[] args) { A myClass = new B(); System.out.print(myClass.x); System.out.print(myClass.y); myClass.m(); } }
答:打印的结果是:00B
题目解析:在 Java 语言中,变量不能被重写。
class A { public void m(A a) { System.out.println("AA"); } public void m(D d) { System.out.println("AD"); } } class B extends A { @Override public void m(A a) { System.out.println("BA"); } public void m(B b) { System.out.println("BD"); } public static void main(String[] args) { A a = new B(); B b = new B(); C c = new C(); D d = new D(); a.m(a); a.m(b); a.m(c); a.m(d); } } class C extends B{} class D extends B{}
答:打印结果以下。
BA BA BA AD
题目解析:
答:this 和 super 都是 Java 中的关键字,起指代做用,在构造方法中必须出如今第一行,它们的区别以下。
答:在静态方法中不能使用 this 或 super,由于 this 和 super 指代的都是须要被建立出来的对象,而静态方法在类加载的时候就已经建立了,因此没办法在静态方法中使用 this 或 super。
答:静态方法的使用须要注意如下两个问题:
答:final 修饰符做用以下:
答:Oracle 官方的文档对于 equals() 重写制定的规则以下。
此题目不要求记忆,能知道大概便可,属于加分项题目。
答:notify() 方法随机唤醒一个等待的线程,而 notifyAll() 方法将唤醒全部在等待的线程。
答:若是是同一个类中使用的话,只须要实现 Cloneable 接口,定义或者处理 CloneNotSupportedException 异常便可,请参考如下代码:
class CloneTest implements Cloneable { int num; public static void main(String[] args) throws CloneNotSupportedException { CloneTest ct = new CloneTest(); ct.num = 666; System.out.println(ct.num); CloneTest ct2 = (CloneTest) ct.clone(); System.out.println(ct2.num); } }
若是非内部类调用 clone() 的话,须要重写 clone() 方法,请参考如下代码:
class CloneTest implements Cloneable { int num; public static void main(String[] args) throws CloneNotSupportedException { CloneTest ct = new CloneTest(); ct.num = 666; System.out.println(ct.num); CloneTest ct2 = (CloneTest) ct.clone(); System.out.println(ct2.num); } @Override protected Object clone() throws CloneNotSupportedException { return super.clone(); } } public class CloneTest2 { public static void main(String[] args) throws CloneNotSupportedException { CloneTest ct = new CloneTest(); ct.num = 666; System.out.println(ct.num); CloneTest ct2 = (CloneTest) ct.clone(); System.out.println(ct2.num); } }