栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java抽象类与接口的异同点

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java抽象类与接口的异同点

一、抽象类*

在了解抽象类之前,需要先了解一下抽象方法。

abstract void fun();

抽象方法需要用abstract来修饰,在有了抽象方法,这个类就可以成为抽象类,也同样需要用abstract来修饰。

接下来看一下抽象类的示例。

对于人类来说,用人类这一个类来描述人类就会比较抽象,只能够描述每一个人都共有的特点而不能更加具体的描述人,所以可以将Peoploe作为一个抽象类,而通过Student和Teacher这样的子类来创建对象。

abstract class People{
	String name;
	int age;
public People(String name,int age){
	this.name = name;
	this.age = age;
}//抽象方法
public abstract void talk();
}

class Student extends People{
public Student(String name,int age){
//子类构造方法通过super()调用父类的构造方法
super(name, age);
}
public void talk() {
System.out.println(“学生—>姓名:”+this.name+”,年龄”+this.age);
}
}

class Teacher extends People{
public Teacher(String name,int age){
	//子类构造方法通过super()调用父类的构造方法
	super(name, age);
}
public void talk() {
	System.out.println(“老师—>姓名:”+this.name+”,年龄”+this.age);
}
}

public class Demo{
	public static void main(String[] args) {
	Student stu = new Student(“dove”, 22);
	Teacher tea = new Teacher(“wang”, 32);
	stu.talk();
	tea.talk();
	}
}

结果:
学生—>姓名:dove,年龄22
老师—>姓名:wang,年龄32

二、接口

接口在java中是一个抽象类型,是抽象方法的集合。一个类通过继承接口的方式,从而继承接口的抽象方法。
下面来看一下接口的示例
通过interface定义了两个接口Fly和Bite,通过Bat类来实现这两个接口

public interface Fly {
	public final int speed=1;
	public abstract void fly();
}
public interface Bite {
	public abstract void bite();
}
public class Bat implements Fly ,Bite {
	@Override
    public void bite() {
        System.out.println("咬");
    }
    @Override
    public void fly() {
        System.out.println("飞");
    }
    public static void main(String[] args) {
        System.out.println(Fly.speed);
    }

}

接口中的所有成员变量都默认是由public static final修饰的。

接口中的所有方法都默认是由public abstract修饰的。

三、异同

抽象类与接口的相同点:

1.两者都不能实例化

2.抽象类的子类必须重写抽象类中的全部抽象方法,接口的实现类也必须实现
接口中的全部抽象方法,只有这样抽象类的子类和接口的实现类才能够实例化

抽象类与接口的不同点:

1.抽象类中可以有普通方法,而接口中只有抽象方法

2.抽象类中可以有普通变量,而接口中只能是公共的静态的常量

3.接口要实现,抽象类要继承,一个类可以实现多个接口,但只能继承一个抽象类

4.抽象类与子类更多是“is-a”的关系,而接口与实现类更多是“has-a”的关系。

四、小结
 虽然两者在语法上存在着不小的差别,但是使用接口也能够实现和抽象类一样的
 操作,当子类和父类之间存在有逻辑上的层次结构时,推荐使用抽象类;当用于
 不同类之间,定义不同类之间的通信规则,希望支持差别较大的两个或者更多对
 象之间的特定交互行为时,应该使用接口。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/657937.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号