1、一、易错概念题1.以下方法错误的是(A D) A 覆盖方法包括成员方法的覆盖和成员变量的覆盖 B 成员方法的覆盖是多态的一种表现形式 C 子类可以调用父类中被覆盖的方法 D 任何方法都可以被覆盖 分析:在子类中调用父类方法使用 super 关键字。super.a() 就可以调用父类的 a 方法。 在类继承或者接口实现过程中就会涉及到成员属性以及成员函数的重写,需要注意的是,成员函数的重写是直接覆盖父类的(继承中),但是成员变量重写是不会进行覆盖的。如果子类本身没有定义使用 this 关键字可以去访问父类的成员变量。 最后 final 修饰的方法不能被覆盖 覆盖即重写和重载一起都是多态的表现形式
2、。(重载、重写和覆盖)override-重写(=覆盖)、overload-重载、polymorphism - 多态override 是重写(覆盖)了一个方法,以实现不同的功能。一般是用于子类在继承父类时,重写(重新实现)父类中的方法。重写(覆盖)的规则:1、重写方法的参数列表必须完全与被重写的方法的相同,否则不能称其为重写而是重载.2、重写方法的访问修饰符一定要大于被重写方法的访问修饰符(publicprotecteddefaultprivate)。3、重写的方法的返回值类型必须和被重写的方法的返回一致;4、重写的方法所抛出的异常必须和被重写方法的所抛出的异常一致,或者是其子类;5、被重写的方
3、法不能为 private,否则在其子类中只是新定义了一个方法,并没有对其进行重写。6、静态方法不能被重写为非静态的方法(会编译出错)。overload 是重载,一般是用于在一个类内实现若干重载的方法,这些方法的名称相同而参数形式不同。重载的规则:1、在使用重载时只能通过相同的方法名、不同的参数形式实现。不同的参数类型可以是不同的参数类型,不同的参数个数,不同的参数顺序(参数类型必须不一样);2、不能通过访问权限、返回类型、抛出的异常进行重载;3、方法的异常类型和数目不会对重载造成影响;对比:如果用重载,则在父类里要对应每一个子类都重载一个取得边数的方法;如果用多态,则父类只提供取得边数的接口,
4、至于取得哪个形状的边数,怎样取得,在子类里各自实现(重写)。2.下面说法正确的是(C H) A instanceof 关键字用来判定某个类是否为抽象类。 B final 关键字修饰的成员变量不需要初始化。 C 接口的方法都是抽象方法(jdk1.8 之前),并且没有方法体 D 当我们继承一个抽象类时,我们必须要实现抽象类的抽象方法。 (X)E 在向上转型的过程中,如果父类和子类拥有相同的名字的成员方法(非静态)访问的是子类的该方法。如果父类和子类拥有名字的成员变量时,访问的是子类的成员变量。(X) F 内部类访问外部类方法时,不用创建外部类对象直接访问外部类方法。G 内部类变量不能设置为 sta
5、tic(可以),也不能设置为 final H 多态通常用来作为参数传入或者作为返回值返回。3.下面说法不正确得是(A C D E) A 不能和 abstract 一起使用的修饰符有 static final public final B 抽象类之间是继承关系,接口之间也是。 C 接口不能存在普通方法和常量 D 局部内部类 public,private 修饰符修饰 default/staticE 接口不可以直接实例化,抽象类可以4.下面有那些选项是对的(B C E) A instanceof 是一个二元修饰符,作用是用来判断左边的对象是否是右边类的实例,返回的是布尔类型 B private pr
6、otected 和 static 都不可以修饰 interface 接口 (接口的修饰符只有 public)C this.属性名访问的是本类中的属性,如果本类中没有,就从父类中继续查找 D 对象是对类的抽象化 E 接口中可以有常量 分析 接口可以有常量(jdk1.8 以后) instanceof 是一个二元修饰符,作用是用来判断左边的对象是否是右边类的实例 或者是右边超类的实例 5.以下说法正确的是 ( B ) 对于方法内得形参() A 必须定义多个形参 B 可以没有 C 至少有一个 D 只能是简单变量6.以下说法正确的是( C ) A 对于局部内部类,不能在 class 前加任何修饰符(pu
7、blic default private protected)来修饰 (static 好像可以)B 只要没有定义不带参数的构造函数,JVM 都会为类生成一个默认的构造函数C 向上转型中,父类与子类拥有相同名字的普通方法时,访问的是子类的成员方法 D 单例模式中类的构造方法使用 private 修饰,声明为私有,这样就不能在类的外部使用 new 关键字来创建实例对象了 7.final 修饰的方法不可重写的(子类不能重写父类 final 方法,但是可以调用)8.以下说法正确的是(E G) A 抽象方法是一种功能契约(功能契约即为接口),不实现抽象方法就无法构造对象 B 接口中的抽象方法只能是 pu
8、blic 的,而抽象类中的抽象方法可以用别的修饰符修饰 (还可以是 protected)C 类是对象的抽象模型,刻画了对象中所有信息 D 抽象方法不能用 final 来修饰 ,可以用 satic 来修饰 E 对计算公式已不需要更改的数学函数,常用 public static final 来修饰; F 若类中有 final abstract 来修饰的方法,必须实现该方法才能构造对象。 G 引用是对象的名字,引用值是对象的起始地址9.下列的说法错误的是(B) A 抽象类必须被子类继承 B 对象向上转型以后,拥有相同名字的普通成员变量(静态变量)时,访问的是子类里面的 C super 的主要功能是完
9、成子类的调用父类的内容,并且只能放在子类构造方法的第一行 D 接口的方法必须定义为 public 权限,并且只能是抽象方法(不考虑jdk1.8)10.下面那些选项是错误的(A B D E) A instanceof 是一个二元操作符,只用来判断左边的对象是否是右边的类的实例,返回是布尔型 (还可以判断是否是右边父类的实例)B 成员内部类可以使用任何修饰符修饰,可以定义常量和静态变量 C this.属性名访问的是本类中的属性,如果本类中没有,就从父类中继续查找 D 在成员方法里面叫做局部内部类,可以访问外部类属性和使用任何修饰符,但使用局部内部类方法时 ,必须实例化内部类对象 E 实现内部类的调
10、用,要直接实例化内部类11 下列定义,正确的有哪些( A B C D) A 接口只能做方法声明,抽象类中就可以做方法实现和方法声明B 抽象类中的抽象方法只能声明,不能实现.abstract void abc();不能加 C 抽象方法要被实现,所以不能是静态的,也不能是私有的 D 接口里只能有公共方法,1.8 以后 可以有普通方法和成员变量 E 类实现接口,利用关键字 implement 完成 (错误 注意为 implements)12 以下说法不正确的有( B C D) A 拥有抽象方法的类为抽象类B 抽象类的方法时抽象方法 C 继承抽象类的子类为抽象类 D 实现接口的类为抽象类13 下列说法
11、正确的是 ( A ) A Java 程序中的 main 方法必须写在类里面B Java 程序中可以有多个 main 方法 C Java 程序中类名必须和文件名一样 D Java 程序的 main 方法中如果只有一条语句,可以不用大括号括起来 E 在类中声明一个整数数组作为成员变量,如果没有给他赋值,数值元素值为空 F 数组本身是一个对象14 如果在子类继承父类,子类构造方法中没有注明时默认第一行调用父类的无参构造方法15 下列说法正确的是(A B C) A try 块不可以省略 B 可以使用多重 catch 块 C finally 块可以省略 D catch 块和 finally 块可以同时省略16 以下对自定义异常描述正确得是(A C) A 自定义异常必须继承 Exception B 自定义异常必须继承 Error C 自定义异常可以更加明确地确定异常出错位置和详细信息 D 程序中已经提供了丰富的异常类,使用自定义异常没有意义17 在 JAVA 中关于抽象类的描述正确的说(B D) A 抽象类可以被实例化 B 如果一个类中有一个方法被声明为抽象的这个类必须是抽象类 C 抽象类的方法必须是抽象的 D 声明抽象类必须带有 abstract 关键字