Java求生之路--抽象类与接口

抽象类&&抽象方法

   当一个类的方法被abstrac关键字修饰时,该方法就成为抽象方法

  抽象方法所在的类就要被定义为抽象类

语法:

     访问修饰符  abstract 返回类型 方法名(参数列表);

public abstract class 类名{
    //**//
}

普通方法 VS 抽象方法

1.抽象方法需要用abstract修饰,普通方法不需要

2.普通方法有方法体,抽象方法没有方法体

普通类 VS 抽象类

1.抽象类不能被实例化,普通类可以被实例化

2.抽象类需要使用abstract修饰,普通类不需要

注意:

1.当一个方法被定义为抽象方法时,意味着该方法则不会有具体的实现,而是在抽象类的子类中通过方法重写进行实现

2.抽象类中可以没有抽象方法,但是包含了抽象方法的类必须被定义为抽象类

3.如果子类没有实现抽象类中的抽象方法,那么子类也要被定义为抽象类

4.没有抽象构造方法,也没有抽象静态方法

5.抽象类中可以有非抽象的构造方法,创建子类的实例时可能调用

6.抽象类中已经实现的方法可以被子类调用,使代码可以被复用,同时提供了抽象方法保证了子类具有自身的独特性。

 

 

接口

为什么要使用接口?

           Java只支持单根继承(即一次只能继承一个类),使用接口可以在一定情况下减少代码的冗余。

接口是一个不能被实例化的类型

语法:

public interface 接口名{
    接口成员及方法
}

接口里所有的方法都是默认的公共抽象的方法。

 

注意:

实现类可以有多个接口,也必须实现接口的所有方法

接口中的变量都是静态变量 public static final

接口中不能有构造方法

 

 

接口的使用

public 类名 implements接口名,接口名2 {
    实现方法
    普通方法
}

接口的继承

public interface 接口名 extends 父接口1,父接口2{
    xxx
}

 抽象类 VS 接口

相同点

   代表系统的抽象层

   都不能被实例化

   都能包含抽象方法(用于提供系统的服务,不必提供具体实现)

不同点

   在抽象了中可以为部分方法默认实现  而接口只能包含抽象方法 

   一个类只能继承一个直接的父类 ,但可以继承多个接口

   已经存在的继承树,可以方便的抽取接口 但是抽取抽象类不容易

 

接口的使用原则

 接口做系统与外界交互的窗口,(接口提供服务)

 接口本身一旦制定,就不允许随意修改

 抽象类可以完成部分功能实现-还有部分功能可做系统扩展点

 

注意:

1.抽象类是单一继承,接口是多重实现

(子类只能有一个父类,但是可以有多个接口)

继承抽象类表示从属关系,实现接口的方法表示组合关系

2.接口中全是抽象方法,抽象类中可以有抽象方法,也可以有包含方法体的方法

3.接口中没有构造方法,不可继承可以被实现

  抽象类中有构造方法,不可被实例化

4.类可以实现很多接口,但只能继承一个抽象类

5.方法参数尽量用接口,方法返回值尽量用接口 属性类型尽量用接口

3.一个接口也可以继承多个接口,但是不能继承类

 

接口还需要注意的地方:

接口中的成员变量

              默认都是 public static final 必须显示初始化

接口中的方法

             默认都是public abstracrt

接口中除了成员变量和方法 不能包含其他

一个接口不能实现一个接口,但是可以继承多个其他接口

一个类必须实现接口抽象方法 ,implements 除非这个类也是抽象类

 

接口是一种约定,有些接口只有名字---

接口中只有静态常量,没有变量

接口中没有私有方法

接口可以作为属性来创建对象。。

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值