abstract(抽象类) interface(接口)

抽象类

有时候,基类并不与具体的事物相联系,而是只表达一种抽象的概念,用以为它的派生类提供一个公共的界面。因此,Java 中引入了抽象类的概念。
抽象类为所有子类提供了一个通用模板
通过抽象类可以避免子类设计的随意性,可以做到严格限制子类的设计,可以使子类之间更加通用

在这里插入图片描述

抽象例子

//求相同周长不同形状的面积
class Square{//正方形面积
	private double c;//定义周长
	public Squre(){//无参构造
	}
	
	public Squre(double c){//有参构造
		this.c = c;
	}

	public double area(){//求面积方法
		return 0.0625*c*c;
	}
}

class Square{//圆形面积
	private double c;//定义周长
	public Circle(){//无参构造
	}
	
	public Circle(double c){//有参构造
		this.c = c;
	}

	public double area(){//求面积方法
		return 0.0796*c*c;
	}
}

发现类Circle和类Square有共同的方法和变量,只是方法体不同

在这里插入图片描述

//所以可以写一个抽象类
abstract class Shape{
	priavte double c;
	public Shape(){
	}
	public Shape(double c){
	this.c = c;
	}

	public abstract double area();//构造方法,只有定义没有方法体,用一个分号结尾
}

继承抽象类

//继承抽象类 必须重写其抽象方法
class Square extends Shape{
	private double c;
	public Square(){}
	public Square(double c){
		super(c);
	}
	public double area(){
		return 0.0625*c*c;
	}
}

class Circle extends Shape{
	private double c;
	public Circle(){}
	public Circle(double c){
		super(c);
	}
	public double area(){
		return 0.0796*c*c;
	}	
}

接口

在这里插入图片描述

接口例子

//接口定义与实现
//格式
[访问修饰符] interface 接口名 [extends 父接口1,父接口2...]{
	>定义常量	//总是用public static final定义 都是大写
	>定义方法	//总是用public abstract定义
}
//实现接口
	>子类通过implements来实现接口中的规范
	>接口不能创建实例,但是可以用于声明引用变量类型
	>一个类实现了接口,必须实现接口中所有的方法,并且这些方法只能是public>java的类只支持单继承,接口支持多继承

interface Runner{
	public static int DEFAULT_SPEED = 100;//接口中不可以定义成员变量,但可以定义常量
	public static final int NUM=100;
}
public void run();//接口中只可以定义没有实现的方法(可以省略public abstract)
//接口继承
interface Runner{
	public void run();//只定义方法,没有方法体
}
interface Hunter extends Runner{
	public void hunt();//只定义方法,没有方法体
}
//接口实现
class AmericanCul implements Hunter{
	public void run(){
	//方法体
	}
	public void hunt(){
	//方法体
	}
}

//必须要实现Hunter接口中的hunt方法以及父类接口Runner中的run方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值