接口、抽象类、普通类

1、常见面试题

1.1 接口的修饰符可以为:

A.private B.protected C.final D.abstract

接口的方法默认是public abstract;
接口中不可以定义变量即只能定义常量(加上final修饰就会变成常量)。所以接口的属性默认是public static final 常量,且必须赋初值

在这里插入图片描述

1.2 public interface IService {String NAME=“default”;}默认类型等价表示是哪一项:

A.public String NAME=“default”;
B.public static String NAME=“default”;
C.public static final String NAME="default";
D.private String NAME=“default”;

接口当中的成员变量默认是:public static final
接口当中的成员方法默认是:public abstract
一般定义的时候不加,也是默认为以上的形式存在的

1.3 一个类可以同时被abstract和final修饰吗?

不可以的。final的类不能被重写和继承,

而abstract的类是抽象类,本身没有实现,只能通过子类来实现,也就是说必须被继承。

抽象类中不能有static,final,private修饰的方法
被static修饰的方法属于类,是类自己的东西,不是给子类来继承的
private的访问权限是本类中,子类继承父类后,是无法重写private修饰的方法的

2、抽象类和普通类的区别

1、实例化:普通类可以直接实例化,而抽象类不能直接实例化。
2、方法:抽象类中既包含抽象方法又可以包含具体的方法,而普通类只能包含普通方法
3、实现:普通类实现接口需要重写接口中的方法,而抽象类可以实现接口方法也可以不实现。也就是说:抽象类A继承抽象类B,此时抽象类A,可以不重写抽象类B中的方法。如果是普通类继承,就得重写
定义一个接口如下:
在这里插入图片描述
抽象类重写接口方法与否都不影响:
在这里插入图片描述
在这里插入图片描述
普通类不重写就报错:
在这里插入图片描述
在这里插入图片描述

3、抽象类和接口的区别

1、定义:定义的关键字不同,抽象类是 abstract,而接口是 interface。
2、方法:抽象类可以包含抽象方法和具体方法,而接口只能包含方法声明(抽象方法)。
3、方法访问控制符:抽象类中的抽象方法不能被 private 修饰;而接口有限制,接口默认的是 public abstract控制符。
4、实现:一个类只能继承一个抽象类,但可以实现多个接口。
5、变量:抽象类可以包含实例变量和静态变量,而接口只能包含常量。
6、构造函数:抽象类可以有构造函数,而接口不能有构造函数。
7、类的访问控制符:都只能是public。

4、抽象类总结规定

  1. 抽象类不能被实例化(初学者很容易犯的错),如果被实例化,就会报错,编译无法通过。只有抽象类的非抽象子类可以创建对象。

  2. 抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类。

  3. 抽象类中的抽象方法只是声明,不包含方法体,就是不给出方法的具体实现也就是方法的具体功能。

  4. 构造方法,类方法(用 static 修饰的方法)不能声明为抽象方法。

  5. 抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类也是抽象类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值