interface接口类和abstract类的区别分析

很多时候我们已经学过的东西却不能将它很快的想起,或者说的时候总是不全,那么这个时候就需要我们慢下来,好好总结,细细回味。

抽象类

关键字 abstract

abstract关键字修饰的类就是abstract类, 如果类中含有抽象方法,那么这个类就必须使用abstract关键字进行修饰,即这个类就是抽象类。

(public) abstract class demo{
	abstract void print();//抽象的方法
}

注意:

  1. 抽象类的修饰符不能使用private,protected修饰,抽象的方法如果设置为private的话就不能被子类所实现,那么子类也就无法实现父类的抽象方法,致使子类也是abstract如此恶性循环,因此没有意义,好在idea对这样的不正确方式进行了提示。
  2. 子类在继承抽象类的时候,如果不将抽象类的所有抽象方法实现的话,那么该类也必须用abstract进行修饰。
  3. 抽象类不能实例化,即不能使用new关键字进行创建对象。
  4. 抽象类里面的方法也可以含有非抽象方法。
  5. abstract 默认的修饰符是public
  6. 子类使用extends继承抽象类

总结: 抽象类是为继承而存在的,存在的意义就是是对一些共有的方法进行抽象。


接口

关键字 interface

interface修饰的叫做接口,接口是一种非常抽象的类型,它比抽象类更抽象。
接口的书写方式如下

public interface demo{
	int num=10;
	void print();
}

对上述进行分析;

  1. num的被谁修饰?
    –这里接口里面的变量默认被public static final修饰,即静态的不可变的常量。

  2. 里面的方法被谁修饰
    – 里面的方法默认被public abstract 修饰 即抽象的方法

  3. 上述的变量和方法都不能使用private修饰

  4. 子类使用implemants将接口进行实现。
    注意:子类必须实现接口里面的所有方法

    public class test implements demo{
    	@OverRide
    	void print(){
    		//code
    	}
    }
    
  5. 子类可以实现多个接口,间接的解决了java只能使用单继承的缺陷。

  6. 接口类是所有子类的父类,因此使用者只需要使用统一的接口就能调用子类实现的方法,因此接口经常配合多态进行使用。
    demo

class hello implements demo{
	@OverRide
	void print(){
		System.out.println("输出");
	}
}
class test{
	public static void main(String[] args){
		demo d = new hello();
		//这种设计模式非常的重要,正是由于暴露出来的这个接口我们不需要知道接口是谁实现的,如何实现的,我们只需要使用该接口类进行接收,进而使用即可。
		d.print();
	} 
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值