《Java接口与抽象类异同(细节太多)|CSDN创作打卡》

目录

接口

1、接口的定义

2、接口变量

3、接口的使用

4、不同类实现接口实例

 抽象类

1、抽象类的定义 

2、抽象方法的定义

3、抽象类实例

抽象类与接口的区别


一起进步吧!

接口

1、接口的定义

接口用于规范对象应有的行为。接w口定义形式如下:

interface 接口名
{
    //符号常量定义
    //方法声明
}

在接口中定义的域(变量)必须是常量,它的值不能被实现它的类重新赋值。

接口中也只能对方法进行声明,不能定义方法体

接口可以看作是一种特殊的抽象类,可以有多个父接口;

一个接口的完整定义为如下形式:

interface 接口名 extends 父接口列表
{
    //符号常量定义
    //方法声明
}

2、接口变量

定义了一个接口,相当于定义了一种新的数据类型,就可以以这种新的数据类型定义变量。

用接口定义的变量称为接口变量。接口变量的定义形式:

接口名 接口 变量列表;

用接口变量表示实现它的类的对象,接口变量可以称作是对象的上转型对象。作为上转型的接口变量调用方法时,调用的是”子类“中实现的接口中的方法。(体现多态性)(可借下述代码理解)

3、接口的使用

接口必须通过类才能使用。

如果一个类定义了接口中的所有方法,称这个类实现了接口。如果有一个接口方法没有在”类名“类中定义,则该类为抽象类。

Java不支持多重继承,但一个类可以同时实现多个接口。

4、不同类实现接口实例

《Java接口与抽象类异同(细节太多)|CSDN创作打卡》

 抽象类

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定义为抽象类也行,但概念上有本质的不同——关键在于它们不是同一个类,不能有共同的父类。

上一篇:Swift之函数的语法和使用 | CSDN创作打卡


下一篇:@value注解获取yml文件中值得问题