Java抽象类与接口

一、抽象类

1、定义

如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类为抽象类。

2、抽象方法

只包含一个方法名,没有方法体,使用abstract修饰。

注:
  • 抽象类必须要用abstract修饰
  • 抽象类不能使用new操作符创建它的实例,但是仍然可以定义它的构造方法,这个构造方法在它的子类的构造方法中调用
  • 在抽象类扩展的非抽象子类中,必须实现所有的抽象方法
  • 包含抽象方法的类必须是抽象的, 但抽象类中不一定有抽象方法
  • 抽象类中的所有抽象方法必须在子类中被重写

3、实例

  • 定义一个抽象类
public abstract class People 
{
	public abstract void id();
	public abstract void todo();
}
  • 定义一个子类继承这个抽象父类
public class student extends People
{
	public void id() 
	{
		System.out.println("学生");
	}
	public void todo() 
	{
		System.out.println("好好学习");
	}
}

注:如果不重写父类中的所有抽象方法就会报如下错误
1

  • 再测试一下
public class test 
{
    public static void main(String[] args) 
    {
    	student s = new student();
    	s.id();
    	s.todo();
    }
}

最后程序的输出结果是

学生
好好学习

二、接口

1、定义

接口是一种与类相似的结构,只包含常量和抽象方法
在Java中,接口被看作是一种特殊的类,使用接口或多或少有点像使用抽象类。与抽象类相似,不能使用new操作符创建接口的实例。
接口的定义与类比较相似,只不过 接口是通过interface关键字来完成

  • Java采用下面的语法来定义接口
修饰符 interface 接口名
{
/**   常量声明  */
/**   方法签名  */
}

注:

  • 接口中所有属性默认为: public static final
  • 接口中所有方法默认为: public abstract
  • 接口不再像类一样用关键字extends去继承, 而是用implements去实现,也就是说类和接口的关系叫做实现

2、实例

  • 首先定义一个接口
public interface People 
{
	public static final int age = 18;
	public abstract void id();
	public abstract void todo();
	public abstract void myAge();
}
  • 用一个类去实现接口
public class student implements People{
	public void id() 
	{
		System.out.println("学生");
	}
	public void todo() 
	{
		System.out.println("好好学习");
	}
	public void myAge() 
	{
		System.out.println(age);
	}
}
  • 测试
public class test 
{
    public static void main(String[] args) 
    {
    	student s = new student();
    	s.id();
    	s.todo();
    	s.myAge();
    }
}

输出结果为:

学生
好好学习
18

注:由于接口中所有的数据域都是 public static final , 而且所有的方法都是 public abstract , 所以 Java允许忽略这些修饰符,所以上面的接口与下面的接口是等价的

public interface People 
{
	int age = 18;
	void id();
	void todo();
	void myAge();
}

三、区别

1、一个类可以实现多个接口, 但是却只能继承最多一个抽象类
2、抽象类可以包含普通方法也可以包含抽象方法,接口的所有方法都是抽象的
3、抽象类可以声明和使用字段;接口则不能,但接口可以创静态的final常量
4、接口的方法都是public的,抽象类的方法可以是public,private,protected
5、抽象类可以定义构造函数,但是接口不行
6、抽象类只能被类或抽象类继承;而接口既可以被接口继承,也可以被类或抽象类继承
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值