抽象类与接口类特点介绍

抽象类

抽象类:

  1. java中被abstract进行修饰的类;

  2. 抽象类可以拥有构造方法/字段/属性/方法,但不能实例化创建对象,只能依靠子类进行实现;

抽象方法:

  1. 在抽象类中被abstract修饰的方法,只有方法声名,没有具体实现的方法体。

  2. 继承抽象类的子类,都必须要实现抽象类的抽象方法,除非子类也是抽象类;

  3. 抽象类中不一定有抽象方法,但抽象方法一定在抽象类中;

思考:

  1. 抽象类是否存在构造器?
    • 抽象类中可以有构造器,只是抽象类不能通过new实例化对象
    • 当继承自抽象类的子类进行实例化时,首先调用的就是抽象类中的构造方法;
public class AbstractClass {
	public static void main(String[] args){
		//	实例化对象时,先调用抽象的构造方法,在调用自身的构造方法
        WuLin car1 = new WuLin();
	}
}

// 定义一个抽象类
abstract class Car{
	// 构造方法
	Car(){
		System.out.println("Car constructor");
	}
	// 抽象方法,轮子
	abstract void wheel();
	//	普通方法可以在抽象类中存在
	void useTime(){
		System.out.println("it use 3 years");
	}
}
// 继承类
class WuLin extends Car{
	WuLin(){
		System.out.println("WuLin constrauctor");
	}
	// 子类必须实现抽象类中的抽象方法
	@Override
	void wheel() {
		// TODO Auto-generated method stub
		System.out.println("WuLin has four wheels");
	}
	
}

//输出:
/*
Car constructor
WuLin constrauctor
*/
  1. 抽象类存在的意义?
    • 抽象类是将一系列具有同行为的抽象描述进行集合,由于每个对象的具体行为实现都是不同的,所以封装的相关内容都仅是一些约束条件,而没有具体实现;
    • 子类通过继承抽象类,重写方法实现不同的行为;
    • 规范代码接口,简化代码重复性书写,提高代码开发效率;

接口

接口:

  1. Java中被interface 定义的类叫接口,他是抽象方法的集合;
  2. 接口中可以有多个方法,但只能是抽象方法;
  3. 接口中可以有static 和final修饰的变量,不能有具体方法和普通成员变量;
  4. 每一个方法都是被隐式抽象pulic abstract,成员变量也是被隐式 public static final ;
  5. 接口中没有构造方法,不能实例对象,只能被实现;
  6. 接口可以继承接口,也只能继承接口;
  7. 一个类可以实现接口,并且可以实现多个接口,但当实现接口时,必须实现接口中的方法;
//接口定义,接口可以继承接口
// interface 接口名称 [extends 接口]
interface Person{
    //接口中的属性默认是被public static final 的;
    int age = 19;  // public statci final int a = 19;
    //接口中没有构造方法
    //Person(){};	
    // 接口中的方法都是抽象方法
    void say()  // 类似于public abstract void say();
    //void say1(){}	//接口中不能有具体的方法,都是抽象方法
    static void say2(){}	// 接口中可以有静态方法
}

// 接口的实现
// class 类  implements 接口名{  }
class Children implements Person{
    //实现接口中的方法
    @Override
	public void say() {
		System.out.println("实现方法say()");		
	}
}

接口和抽象类的比较:

  1. 相同点:
    1. 都含有抽象方法,派生类或者实现类都必须实现抽象方法;
    2. 都可以实现继承;
    3. 都不能被实例化;
    4. 都是多态的典型应用
    5. 都可以作为数据类型
  2. 不同点
    1. 抽象类单继承,接口可以多继承
    2. 抽象类有构造方法,接口中没有构造方法;
    3. 接口中的方法都是抽象方法,属性都是public static final修饰的,而抽象类都可以有;
    4. 关键字不同,抽象类被abstract修饰,接口被interface 修饰;
    5. 访问权限不同;
    6. 抽象类有根父类,接口没有
    7. 抽象类是继承关系,表示…是…的关系,而接口是实现的关系,表示…有…
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值