2019.07.07抽象类与接口简单介绍

本文介绍了Java中抽象类和接口的概念与区别。抽象类是包含抽象方法的类,不能实例化,其子类必须实现所有抽象方法。接口则是一组规则的封装,成员默认为public,包括常量和抽象方法,实现接口的类也必须实现接口的所有抽象方法。两者都不能直接创建对象,但接口支持多继承,抽象类不支持。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

抽象类

  1. 什么是抽象类
    只定义了类的抽象行为,没有具体实现相应的行为。
  2. 语法格式
    在这里插入图片描述
  3. 注意
    1.抽象类不能创建对象;
    2.抽象类中的抽象方法可有可无;
    3.普通的子类 必须 重写实现抽象父类中的所有抽象方法;(抽象子类除外);
    4.构造不能是抽象的;
    5.抽象不能private ,static,final一起使用。
  4. 代码实现

//抽象类
abstract class TrafficTool{
	private int count;
	public TrafficTool() {
	}
	public TrafficTool(int count) {
		this.count = count;
	}
	public int getCount() {
		return count;
	}
	public  abstract void run() ;//抽象方法
}
class Car1 extends TrafficTool{	
	public Car1(int count) {
		super(count);
	}
	public void run() {
		System.out.println("汽车在 公路上行驶,载客量:" + getCount() );
	}
}
class Tube extends TrafficTool{
	public void run() {
		System.out.println("地铁在隧道里行驶");
	}
}
public class TestTrafficTool {
	public static void main(String[] args) {
//		TrafficTool tool = new TrafficTool() ;//不能创建对象 
		
		Car1 car = new Car1(20);
		car.run();
//		Tube tube = new Tube();
//		tube.run();

接口

  1. 什么是接口
    接口:一组规则的封装。
    在这里插入图片描述

  2. 注意
    1)成员都是 public的;
    2)常量 :public static final
    3) 抽象方法:public abstract的
    4)默认方法: public default

  3. 接口的特点
    1)不能创建对象;
    2)使用通过 实现类 来使用的;
    3)实现类 实现接口 ,必须 实现所有的抽象方法;(抽象的实现类除外);
    4)实现类可以实现 多个接口的功能;
    5)接口之间可以继承,可以多继承。

  4. 代码实现
    示例1:

//三项电
interface ThreeElectric{
	void threeService();//抽象方法
}
//两项电
interface TwoElectric{
	 void twoService();
}
//插排
interface Socket extends ThreeElectric,TwoElectric{
	void socketService();//插排供电
}
class Goods{
	//商品
}
class Computer extends Goods implements Socket{
	@Override
	public void twoService() {
		System.out.println("计算机的外部设备两项电通电");
	}
	@Override
	public void threeService() {
		System.out.println("计算机本身三项电通电");
	}
	@Override
	public void socketService() {
		System.out.println("计算机连接插排供电");
	}

}
/*class Computer implements ThreeElectric,TwoElectric{
	@Override
	public void twoService() {
		System.out.println("计算机的外部设备两项电通电");
	}
	@Override
	public void threeService() {
		System.out.println("计算机本身三项电通电");
	}

}*/

public class TestElectric {

	public static void main(String[] args) {
		Computer computer = new Computer();
		computer.threeService();
		computer.twoService();
//		IceBox box = new IceBox();
//		box.threeService();

	}

}

class IceBox implements ThreeElectric{
	@Override
	public void threeService() {
		System.out.println("冰箱三项电通电");
	}	
}

示例2

interface IA{
	int N = 11;//常量 static final 
	static void sf() {System.out.println("ia_sf");}
	default void df() {System.out.println("ia_df");}
	void af();
}
interface IB{
	int N = 22;//常量
	static void sf() {System.out.println("ib_sf");}
	default void df() {System.out.println("ib_df");}
	void af();
}
class DemoIAIB implements IA,IB{
	/*//匿名内部类分别是实现的
	IA ia = new IA() {
		@Override
		public void af() {
			System.out.println("ia_af");
		}
	};
	IB ib = new IB() {
		@Override
		public void af() {
			System.out.println("ib_af");
		}
	};
	*/
	@Override
	public void af() {
		System.out.println("af");
	}
	public void show() {
		System.out.println(IA.N);
		System.out.println(IB.N);
		IA.sf();
		IB.sf();
//		df();
	}
	@Override
	public void df() {
		IA.super.df();
		IB.super.df();
		System.out.println("hello");
	}

}



接口和抽象类异同

抽象类:只定义了类的抽象行为,没有具体实现相应的行为。
接口:一组规则的封装。
相同点:都不能创建对象;
注意:
1.抽象类不能创建对象;
2.抽象类中的抽象方法可有可无;
3.普通的子类 必须 重写实现抽象父类中的所有抽象方法;(抽象子类除外);
4.构造不能是抽象的;
5.抽象不能private ,static,final一起使用
2.接口特点:
1)不能创建对象;
2)使用通过 实现类 来使用的;
3) 实现类 实现接口 ,必须 实现所有的抽象方法;(抽象的实现类除外);
4)实现类可以实现 多个接口的功能;
5)接口之间可以继承,可以多继承。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值