java具体类抽象类子例例子_Java面向对象程序设计:抽象类,接口用法实例分析...

本文实例讲述了Java面向对象程序设计:抽象类,接口用法。分享给大家供大家参考,具体如下:

本文内容:

抽象类

接口

抽象类与接口的异同

首发日期:2018-03-24

抽象类:

虽然已经有了父类,但有时候父类也是无法直接描述某些共有属性的,比如哺乳类和人类都会叫,而一般来说哺乳类这个父类并没有准确定义“叫”的属性的,显然应该由子类来决定怎么“叫”,但“叫”这个属性是共有的,那么可以把这个属性抽象化(抽象则代表没有具体内容),由子类来实现具体内容。

普通类中无法定义抽象方法,所以定义了抽象类。

由于抽象方法子类是必须重写的,不然会运行失败,所以可以确保子类重写抽象方法。

抽象类可以有抽象方法,也可以没有抽象方法(没有抽象方法的抽象类),没有抽象方法时,子类继承不需要覆盖方法。

抽象类不可以实例化,不能用new关键字创建对象。

只有子类覆盖所有的抽象方法后,子类具体化,子类就可以创建对象。如果没有覆盖所有的抽象方法,子类还是抽象类。

抽象方法一定定义在抽象类中,都需要abstract来修饰。抽象方法只允许声明,不允许定义。故此不能有大括号。抽象方法也不允许用final修饰。

抽象类的定义格式:

9334efc6370646c49cbcef8fa7bb97a9.png

抽象方法的定义格式:

8903e212040ddb8820fe6e06d3a8c082.png

abstract class A{

abstract void talk();//只能声明,不能具体定义

}

class B extends A{

void talk() {

System.out.println("run in B");//子类必须重写抽象方法

}

}

public class Demo {

public static void main(String[] args) {

B b=new B();

b.talk();

}

}

接口:

接口也是抽象的,抽象的原因与抽象类的原因类似。但用处不同,接口一般用于定义类的统一行为,而抽象类是“继承”。

类重写一个接口中的所有抽象方法称为接口的实现。

接口解决的问题:JAVA不直接支持多继承,但支持多实现。

接口体中包含常量定义和方法声明,不允许对方法进行定义。

接口可以说是完全抽象的抽象类。

子类需要覆盖接口中的所有的抽象方法才能实例化,否则它是一个抽象类。

如果一个类实现了一个接口,该类必须对接口中声明的方法进行定义。实现方法时方法的名字、返回类型、参数个数及参数类型必须与接口声明的一致。

接口中,方法的修饰符默认是public abstract;接口中的常量的修饰符默认是public static final;所以子类中必须使用public来修饰定义的方法。

接口的定义格式:

5d7878869dfec90a58afaf0bb7ef9a94.png

接口的实现:

2e64af373e6fa8769d42e87f98b882b1.png

package 接口;

interface A{

public static final int size=100;

public abstract void talk();

// public abstract void eat();

}

class B implements A{

//实现A中的抽象方法

public void talk() {

System.out.println("B talk");

}

}

public class Demo {

public static void main(String[] args) {

new B().talk();

}

}

注意:

如果一个类声明实现了一个接口,但没有实现接口的所有方法,那么这个类必须是抽象类

7fea3d5409fa869b9d2e48e2e5c23db6.png如果一个类没有完全实现接口中的所有方法,那么这个类必须是一个抽象类。

抽象类与接口的异同:

相同:

都是抽象的

都不能被实例化

都能包含抽象的方法,这些抽象的方法用于描述类具备的功能,但是不提供具体的实现。

差异:

接口是完全抽象

概念设计区别:

抽象类是可以有非抽象方法的,而接口是完全抽象的,其实可以这样理解他们的区别:A,B都是一个抽象类,但它们由于是“父类”,所以一般来说都是有一些具体属性的,可以说抽象类是一个父类的抽象化,但它离不开父类与子类的关系;但接口定义的是行为,它并没有强的父子类关系,它只是完全抽象的定义了一些行为作为标准,就像工厂里的元件的各种标准。

而接口中的变量和方法的修饰符都显示出接口是一个“开放的固定的行为标准”

希望本文所述对大家java程序设计有所帮助。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值