java基础抽象类和接口你知道的够细吗?

  今天说一下java中抽象类和接口,之前学过C#对抽象类和接口都有接触过,但是到了java基础中,又学了一边,对抽象类和接口有了更深,更细致的理解。之前学的时候,懵懵懂懂,嗯。。。。哦。。。。昂。。。今天来好好的总结一下。

首先声明,接口和抽象类的使用都是离不开多态的!不明白多态的小伙伴,先看看什么是多态。

  抽象类的特点:

抽象类和抽象方法必须使用abstract关键字修饰。

public abstract class 类名{}
public abstract void eat();

抽象类中不一定有抽象方法,但是有抽象方法的一定是抽象类。 

抽象类不能被实例化直接使用。

问题:那么抽象类怎么使用?利用多态的方式,通过子类对象实例化,叫抽象类多态。

抽象类的子类:

1 要么重写抽象类中的所以有方法  2 要么是抽象类

抽象类成员的特点:

成员变量:在抽象类里可以定义变量,可以定义常量。

构造方法:有构造方法,但是不能不能实例化。作用,用于子类访问父类数据的初始化。

成员方法:可以有抽象方法:子类必须实现的方法。也可以有非抽象方法:提高代码的服用性。

接口的特点:

接口用interface修饰

public interface 接口名 {}

类实现接口用implements表示

public class 类名 implements 接口名 {}

 接口和抽象类一样也不能被实例化,直接使用。

使用方式:利用多态的方式,通过子类对象实例化,叫接口多态。

多态的几种形式:具体类多态,抽象类多态接口多态。我们在使用的过程中很少去用具体类多态,个人觉得具体类里面东西写的比较死,不灵活。

接口的实现类:

1  要么重写接口中的所有抽象方法  2 要么是抽象类

接口的成员特点:

成员变量:只能是常量。 

默认修饰符 Public static final

例如: 下面的两种形式都一样的,不写的话,用的时候会默认加上。

public interface People{
     int  number=10;
}

public interface People{
   pubilc static final  int  number=10;
}

构造方法:接口没有构造方法,接口是对行为的抽象,没有具体的存在。

一个类如果没有父类,默认继承自Object类。

成员方法:

只能是抽象方法。 修饰符:Public abstract

例如: 下面两种方式是一样的。

public interface People{
     void work();
}

public interface People{
   public abstract void work();
}

区别:

区别 成员区别 关系区别 设计理念区别
抽象类 常量,变量,抽象方法,构造方法,非抽象方法

类和类继承,单继承。

对类抽象,包括属性、行为
接口 常量,抽象方法

类和接口实现,单实现,多实现。

接口与接口可以继承,单继承,多继承。

对行为抽象

什么时候用抽象类,什么时候用接口?首先没有绝对的说法,要根据情况来订。

例如:一个门,可以打开,关闭。那么我们既可以用接口也可以用抽象类。然后这个门多了个警报功能。那么代码怎么写。

如果,我们还是都写在接口和抽象类中,那么有别的门不会警报,但是你写死了,必须实现警报这个方法,那就不行了。

所以推荐还是抽象类中,写打开和关闭方法。 接口中写警报方法,这样最好。接口是对行为的抽象。

public interface Alram{
    void alarm();
}

public abstract class Door{
    public abstract void open();
    public abstract void close();
}

public class AlarmDoor extends Door implements Alarm{
    public void open(){
     //...
    }
     public void close(){
     //...
    }
     public void alarm(){
     //...
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_44126152/article/details/106221853