java—抽象类_接口

目录

抽象类(abstract)和接口(interface)

抽象类(abstract)

抽象方法

最终类(final)

最终方法:

接口(interface)

特点: 

类与接口的差异:

接口的多继承

接口vs抽象类:

接口中的其他知识了解

关于三种引用类型总结(结合多态)

tips: 


抽象类(abstract)和接口(interface)

类的用途

1,放置静态属性,静态方法的地方

2,用来实例化对象的模板

3,用来供其他人继承

抽象类(abstract)

抽象类vs普通类:抽象类没有直接实例化对象的能力!

语法:在定义类时,添加抽象(abstract),这个类就被定义为了一个抽象类

如图,将Animal类定义为了抽象类

此时再去实例化Animal对象,会提示,即Animal类是抽象类,不能被实例化(instantiated(实例化的))


抽象方法

java语言赋予了抽象类一项普通类不具备的,新的能力:

抽象类中允许定义一些方法,但没有实现(没有方法体,只是声明),这些方法是专门留给子类去实现的。

这种方法被称为抽象方法。

抽象方法vs普通方法:1)被abstract修饰 2)没有方法体

若此时定义了一个Dog普通类,Dog extends Animal(抽象类),Dog必须要么是抽象类,要么就要去重写从父类(抽象类)中继承下来的抽象方法。

小结:

抽象方法只有抽象类中允许出现,不能出现在普通方法中。

所以上例中要么把Dog类变成抽象类去继承Animal的抽象方法,要么重写抽象方法把它变成普通方法。

使用抽象类的例子

线性表(抽象类)-> 顺序表,链表(具体类)

Animal(抽象类) -> Dog(具体类)

最终类(final)

上面最开头介绍了类的三种用途

抽象类(abstract)只能被继承不能实例化对象

而最终类(final)只能实例化对象不能被继承

final(最终),用final修饰类表示类是最终类

用Little_dog(普通类)去继承Dog1(最终类),提示

 即不能去继承一个最终类       inherit:继承

最终方法:

抽象类,普通类都允许出现最终方法(通过final修饰),这种方法不允许被重写。

最终方法主要是给抽象类和普通类使用的(最终类不允许继承,没有重写方法这一说!)

小结:

抽象方法只允许出现在抽象类中

最终方法允许出现在任何类中

总结:


 

接口(interface)

定义:Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为。

特点: 

            没有属性

            只能出现方法,且这些方法默认是抽象方法,并且被public修饰

            从某些方面来说:接口是一个极端的抽象类(全部只有抽象方法的类)

接口的定义

public interface Walkable{     //具有走的能力的一个概念

         void walk();                      //接口中默认视为public abstract void fiy();

接口的实现  

class Dog impements Walkable{

      @Override

      void walk();{......}

}

类与接口的差异:

1,逻辑概念上

类总是描述现实中的一类事物,可以描述抽象事物(动物,线性表),可以描述具体事物(狗,链表)

接口大多数时候表示一组能力的聚合,描述某种(某些)能力的东西(便于初学者理解的解释)

   具备飞行能力(Flyable),具备行走能力(Walkable)

2,

1)类可以被继承(扩展extends)

class A extends B{......}      A类继承自B类,只允许单继承

2)接口是用来被实现的(implements)

class X implements Y{...}   A类实现了B接口,允许一个类同时实现多个接口

class X implements O,P,Q{...}  A类实现了三个接口


接口是特殊的抽象类,故接口和抽象类都不能去实例化对象

现实世界中,使用抽象类或接口的情况有哪些?

比如A需要一个能提供排序能力的对象,B负责提供一个类去实现排序

这时可以由A提供一个抽象类或者接口,让B去重写方法或者实现接口

这样做的好处有:

1,A可以固定排序能力的边界

2,由于接口可以被多个类去实现,A可以找任意一个人去实现这个接口,不同人可以有不同的方法去实现接口

初学者阶段,代码程序较简单可以自己搞定,很少出现需要自己定义接口,抽象类,最终类的场景。

这时候同学们只要掌握是用别人定义的接口,抽象类即可!

接口的多继承

接口本身允许多继承,继承自另外的接口,同时允许多继承。

interface A {void a();}

interface B {void b();}

interface Z extends A,B {void z();}

接口Z继承自接口A,B,最终Z中的抽象方法有a(),b(),z();

接口vs抽象类:

相同点:

1)不能被实例化      //抽象类和接口均可当作职责边界来使用

2)   允许出现抽象方法

不同点:

1)接口中的内容只有抽象方法

2)普通类和抽象类之间的关系是(extends)继承关系,只能单继承

      普通类和接口的关系是实现(implements)关系,允许一个类实现多个接口

 3)接口和接口之间也允许继承(extends)关系,允许多继承

 4)抽象类中可以有属性,普通方法。接口中只能有抽象方法(默认都是public)

 5)   类基本是描述一类事物,接口大多描述一组能力(要求)(初学者好理解)

接口中的其他知识了解

(初学者一般用得少,作为了解)

1,定义的属性都是静态属性,且被public修饰

2,允许定义静态方法

3,允许定义default方法

关于三种引用类型总结(结合多态)

理解了以上这些知识,我们可以再来研究一下java的数据类型

两大类型:基本数据类型,引用类型

基本数据类型(8种): byte,short,int,long,float,double,char,boolean

引用类型(三大类):

class 类型      String s;  String是一个class

interface类型  Flyable f;Flyable是一个接口

array 类型       int[] t;

tips: 

Clonable:具备clone能力的    当某个对象被Clonable修饰时,JVM会对其特殊处理,允许

                                              SomeClass sc = new SomeClass();

                                              SomeClass copy =clone sc;//对象的复制(拷贝,克隆)过程

这些知识可以帮助学编程的你了解抽象类,最终类,接口嘛?若您发现有错误请各位尽情批评指正!!

如果对你有帮助,可以的话请三连支持,谢谢!!

  • 9
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 24
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

.小柱.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值