1、什么是抽象类,它的特点是什么?
/*概念: 被abstract修饰的类就是抽象类
特点: a 抽象类中不一定有抽象方法,但有抽象方法的类一定是抽象类
b 抽象类不能被实例化,也就是说抽象类不能创建对象,但可以通过父类引用指向子类对象
c 子类继承抽象类,要么子类是抽象类,要么子类就重写抽象类中的全部抽象方法.
*/
2、抽象类的成员特点有哪些?
/* a 抽象类中的成员变量既可以是变量也可以是常量
b 抽象类中有构造方法,它的作用是使子类能够访问父类,给父类初始化用的
c 抽象类中的成员方法,既可以是抽象方法也可以是非抽象的成员方法
*/
3、抽象类的面试题:
A、一个类如果没有抽象方法,可不可以定义为抽象类?如果可以,有什么意义?
//可以,作用是不让其他类创建本类对象,而是让该对象的子类来完成相应操作
B、abstract不能和哪些关键字共存,为什么?
/* a final final的作用就是限定父类中的方法或变量,使得子类无法重写或者修改父类中的内容,而
abstract强制要求子类必须冲洗父类中的抽象方法,所以二者冲突
b private private修饰的方法是不能被继承的,也就谈不上重写,而abstract强制要求子类重写父
类中的抽象方法,所以二者冲突
c static static 是为了给所有对象共享,为了让类名来调用,来执行一些方法里面的内容,而abstract
修饰的方法,没有方法体,共享之后没有意义
*/
4、什么是接口,它的特点是什么?
/*概念:狭义讲接口就是java中的interface
广义讲对外提供规则的都是接口
特点: a 用interface来修饰 格式:interface 接口名{}
b 类可以实现接口,用implements来表示,格式: class 类名 implements 接口名{}
c 接口不能直接实例化,要想实现实例化,需要使用"父类引用指向子类对象"
d 接口的子类可以是抽象类,也可以是普通类,但是普通类必须重写接口内的所有方法
e 接口内的方法全都是抽象方法
*/
5、接口的成员特点有哪些?
/* a 成员变量都变成了常量,因为在变量前面默认隐藏了:public final,被final修饰的变量就是常量
b 接口中不存在构造方法
c 接口中的成员方法都是抽象方法,每个方法前面都默认隐藏了:public abstract
*/
6、抽象类和接口的区别是什么?
/* 成员区别:
抽象类:成员变量可以是常量也可以是变量
有构造方法,可以用来让子类访问,从而给父类初始化
成员方法,可以是抽象方法,也可以是普通方法
接口:成员变量前默认隐含了public final ,所以成员变量就变成了常量
接口中不存在构造方法
成员方法,接口中的成员方法都是抽象方法
关系区别:
类与类: 继承关系,能单继承,能多层继承,但是不是多继承
类与接口:是实现关系,可以但实现,也可以多实现
接口与接口:是继承关系,可以单继承,也可以多继承
注意:JAVA中可以多继承,这里的多继承指的是接口的多继承,对比前面的类的继承,类不能多继承,
但是可以单继承或者多层继承
|
|