接口与抽象类的区别

本文详细介绍了Java中抽象类和接口的概念,包括它们的关键字定义、可使用的方法(如抽象方法、构造方法、默认方法等)、继承方式以及注意事项。重点强调了抽象类的抽象方法要求和接口的特性和限制。
摘要由CSDN通过智能技术生成

、abstract抽象类

1.关键字定义

通过abstract关键字定义抽象类

2.可使用的方法

  • 允许有构造方法
  • 允许定义抽象方法(用abstract修饰的方法,没有方法体)
  • 允许有普通方法

3.继承

只能用extends继承一个class类

4.注意要点

  1. 抽象方法存在的类必须是抽象类,而抽象类中不一定定义抽象方法
  2. 抽象类的子类必须重写抽象类的抽象方法
  3. 如果抽象类的子类也是抽象类,可以不用重写父类的抽象方法
  4. 抽象类不能被实例化,但可以创建一个新对象,用它引用
//抽象类
public abstract class Person{
    //抽象方法
    public abstract void run1();
    //构造方法
    public Person(){}
    //普通方法
    public void jump(){}
    //定义成员变量
    public String bookname;
	private int amount;
	protected double price;
}
//抽象子类
abstract class Son extends Person{
    //抽象方法
    public abstract void run2();
}
//子类
class Child extends Son{
    //重写父类Son的构造方法
    //Son也是Person的子类,所以也要重写Person的构造方法
    @Override
	public void run2() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void run1() {
		// TODO Auto-generated method stub
		
	}
}
class Children extends Person{
    //重写父类Person的构造方法
	@Override
	public void run1() {
		// TODO Auto-generated method stub
		
	}
}
class People{
    public static void main(String[] args) {
        //创建对象
		Person a=new Children();
        //调用方法
		a.run1();
	}
}

二、interface接口

1.关键字定义

接口由interface关键字定义

2.可使用的方法

  • 允许定义抽象方法,可以省略abstract以及public
  • 允许有默认方法,通过default关键字定义的方法
  • 不允许有构造方法和普通方法

3.继承

  • 通过implements实现interface接口,可以实现多个接口
  • 接口之间允许extends继承多个接口

4.注意要点

  • 不允许定义成员变量,只能定义常量
  • 只能使用public访问修饰符
  • 接口不允许实例化
public interface Person {
    //抽象方法
	public abstract void run();
	abstract void jump();
	void walk();
	//默认方法
	default void dosth() {}
    //定义常量
    public static final String name = "";
}
class Son implements Person{
	//重写抽象方法
	@Override
	public void run() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void jump() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void walk() {
		// TODO Auto-generated method stub
		
	}
	
}
//定义三个接口a,b,c
interface a{}
interface b{}
interface c{}
//类可以实现多个接口
class Child implements a,b,c{}
//接口可以继承多个接口
interface Children extends a,b,c{}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值