类与接口,接口与抽象类的区别

类和接口的概念

类的概念:是一组共同属性和方法的集合;
接口的概念:是一组功能的集合,也就是方法的集合;
接口不能定义普通成员变量,只能定义方法,且方法是抽象的;

类的定义:使用关键字class; 定义格式: public class 类名{}
接口的定义:使用关键字interface; 定义格式:public interface 接口名{}
接口中的成员变量:接口中可以定义成员变量,但是变量必须有固定的修饰符修饰;public static final修饰的接口中的变量也是常量,其值不能改变;在开发中不在接口定义成员变量。
接口中的成员变量定义格式:public static final 数据类型 成员变量名 = 值;
接口的方法定义格式:public abstract 返回值类型 方法名();

// 定义一个接口Person,里面有抽象方法show()
// An highlighted block
public interface Person{
	//声明抽象方法
	public abstract void show();
}

类于类之间的关系:
继承,而且是单继承,不支持多继承;一个子类,只能有一个父类;
接口于接口的关系:
继承,但是可以多继承;一个子接口可以有多个直接父接口;

类和接口的区别并不大:
(1)它们的源文件名都是文件名.java;
(2)经过编译后的文件都是字节码文件–文件名.class;

接口的特点

(1)接口可以继承接口;
(2)java支持一个类同时实现多个接口,或一个接口同时继承多个接口;
(3)类可以在继承一个类的情况,再实现多个接口;
(4)接口与父类的功能可以重复,均代表具备某种功能,并不冲突;

接口能创建对象吗?

不能;都是抽象的方法;
接口的作用:天生作为父接口被子类继承;

面试题:java到底支不支持多继承

如果是类与类,不支持多继承,支持多重继承;
如果是接口与接口,支持多继承,也支持多层继承;

类与接口之间叫什么?

**不叫继承,叫实现,可以多实现;**是类实现接口!!!
实现和继承差不多,实现是类把接口中的抽象方法拿过去;
实现类必须重写接口中的所有的抽象方法,实现类才能实例化对象;否则,实现类只是抽象类!!!

下面展示一些 内联代码片

// 定义接口Inter1,Inter2
public interface Inter1 {
	//成员变量
	public static final int name = inter1;
	//抽象的成员方法
	public abstract void show1();
}
public interface Inter2 {
	//成员变量(也是常量,其值不能改变)
	public static final int name = inter2;
	//抽象的成员方法
	public abstract void show2();
}
//定义接口Inter3继承Inter1,Inter2
public interface Inter3 extends Inter1,Inter2 {
	public abstract void show3();
}

//定义一个实现Inter类来实现Inter3接口
public class Inter implements Inter3 {
	//要么加abstract;要么重写方法;我们开发中在实现类中都是重写方法
	//实现类重写完接口中所有的抽象方法,才能实例化对象;否则不能创建对象
	//重写show1()方法
	public void show1() {
		System.out.println("这是show1()方法");
	}
	//重写show2()方法
	public void show2() {
		System.out.println("这是show2()方法");
	}
	//重写show3()方法
	public void show3() {
		System.out.println("这是show3()方法");
	}
}

开发中最常用的模式:

一个类继承一个抽象类,同时实现多个接口;
public class A extends AbstractB implements Interface1, Interface2 {
//A必须重写抽象类的所有抽象方法,已经接口的所有抽象方法,才能实例化,否则类A还是抽象类
}

接口与抽象类的区别

相同点

(1)都不能创建对象;
(2)都位于继承的顶端,用于被其他类实现或继承
(3)实现类/子类都必须重写所有的抽象方法,才能够创建对象;

区别

(1)抽象类使用关键字abstract,接口使用关键字interface;
(2)抽象类中可以有抽象方法,也可以没有抽象方法;接口只能有抽象方法,不能有非抽象方法;
(3)抽象类可以定义任意成员变量,接口的成员变量只能使用public static final修饰;
(4)类与抽象类之间是单继承,类与接口之间的关系可以是多实现;
(5)抽象类作为父类,父类必须定义整个继承体系的共性内容;接口中定义的是整个继承体系外额外扩展的功能;

二者的选用

优先选用接口,尽量少用抽象类;
需要定义子类的行为,又要为子类提供共性功能的时候才选用抽象类;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值