《Java接口与抽象类异同(细节太多)|CSDN创作打卡》
2022/2/9 20:23:38
本文主要是介绍《Java接口与抽象类异同(细节太多)|CSDN创作打卡》,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录
接口
1、接口的定义
2、接口变量
3、接口的使用
4、不同类实现接口实例
抽象类
1、抽象类的定义
2、抽象方法的定义
3、抽象类实例
抽象类与接口的区别
一起进步吧!
接口
1、接口的定义
接口用于规范对象应有的行为。接w口定义形式如下:
interface 接口名 { //符号常量定义 //方法声明 }
在接口中定义的域(变量)必须是常量,它的值不能被实现它的类重新赋值。
接口中也只能对方法进行声明,不能定义方法体。
接口可以看作是一种特殊的抽象类,可以有多个父接口;
一个接口的完整定义为如下形式:
interface 接口名 extends 父接口列表 { //符号常量定义 //方法声明 }
2、接口变量
定义了一个接口,相当于定义了一种新的数据类型,就可以以这种新的数据类型定义变量。
用接口定义的变量称为接口变量。接口变量的定义形式:
接口名 接口 变量列表;
用接口变量表示实现它的类的对象,接口变量可以称作是对象的上转型对象。作为上转型的接口变量调用方法时,调用的是”子类“中实现的接口中的方法。(体现多态性)(可借下述代码理解)
3、接口的使用
接口必须通过类才能使用。
如果一个类定义了接口中的所有方法,称这个类实现了接口。如果有一个接口方法没有在”类名“类中定义,则该类为抽象类。
Java不支持多重继承,但一个类可以同时实现多个接口。
4、不同类实现接口实例
抽象类
1、抽象类的定义
关键词abstract修饰的类就是抽象类。抽象类的定义形式如下:
abstract class 类名 { //类体 }
抽象类中也可以定义域和方法,但不能生成抽象类的实例,因为抽象类描述的是不存在的事物。
定义抽象类的目的在于使行为相似的对象有共同的父类,则可以用父类对象表示子类对象,从而实现多态性。
2、抽象方法的定义
用关键字修饰的方法就是抽象方法。抽象方法只有方法的声明(方法头部),而没有方法的实现。
抽象方法的定义形式如下:
abstract 方法类型方法名([形式参数]);
抽象方法的定义由子类实现,所有抽象方法一定不能用final修饰!
如果一个类声明了抽象方法,则该类一定要定义成抽象类!
抽象类中也可以定义非抽象方法!
3、抽象类实例
public static void main(String[] args) { Transport a;//声明一个交通工具类的对象 //a=new Transport(); 不允许,因为Transport是一个抽象类 a=new Rocket("长征四号",2200); a.run(); a=new Ship("鸡舰",23); a.run(); } } abstract class Transport{//抽象类的交通工具类 int speed; String name; public Transport() {//构造方法 } public Transport(String name,int speed) { this.name=name; this.speed=speed; } public abstract void run();//抽象方法 } class Rocket extends Transport{ public Rocket(String name,int speed) { super(name,speed); } @Override public void run() { System.out.println(name+"火箭以"+speed+"km/h的速度在太空环游。"); } } class Ship extends Transport{ public Ship(String name,int speed) { super(name,speed); } @Override public void run() { System.out.println(name+"船以"+speed+"km/h的速度在水里乱转。"); } }
Transport类描述的对象不是具体事物,所有这里定义为抽象类,类中run()方法定义为抽象方法。
抽象类与接口的区别
接口与抽象类非常相似,甚至可以相互取代;
不同:抽象类用于表示同一类对象的共同属性和行为,而接口可以表示不同类的对象的属性和行为,这是概念上的不同
接口用于规范不同类的对象应具有的操作,但每类对象的具体操作由具体类定义。
可以看出接口实例中把Charge定义为抽象类也行,但概念上有本质的不同——关键在于它们不是同一个类,不能有共同的父类。
这篇关于《Java接口与抽象类异同(细节太多)|CSDN创作打卡》的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南