我的编程之路(java)2 抽象类与接口

抽象类

上篇文章,我们提到类就是一类具有相同属性或者方法的对象的抽象。那么抽象类是什么呢?

比如:假设大学生和小学生这两个类都是从学生类继承而来的,大学生类和小学生类中的属性和方法都是具体的。大学生有名字、性别等属性,有学习,玩等方法。小学生也有姓名,性别,学习和玩。那么在他们的父类学生类中,也应该有学习和玩这两个方法。

但是,假设大学生和小学生玩的方法是一样的,学习的方法是不一样的,那学生类中学习的方法该如何实现呢?

按上篇文章的思路,我们可以先在学生类中随便写。之后在大学生类中和小学生类中重写这个方法,就可以了。这样就很麻烦,如果父类中有100个这样的方法,那我们就要写100个实现,就算是随便写,也很多。因此,就诞生了抽象类这个概念,抽象类,就是类中的方法没有实现,只定义方法,把方法体交给子类去实现。但是这样有一个缺点,就是抽象类是不能定义对象的,所以如果这个父类需要定义对象的话,就只能采用方法重写的方式了。

附:抽象类的定义方式

public absract class 抽象类名 {
	//类属性
	……
	//类方法
	public study();//只定义不实现
	public play(){//实现
	System.out.printf("I am playing!");
	}
}

接口

有了抽象类的概念,接口就很好理解了,接口就是所有的方法都是只定义不实现的,而且没有类属性,只有类常量。可以说是一个高度抽象的类,但是它的定义方法和抽象类不同。然后,如果类要继承接口的话,就要把接口中定义的所有方法实现,如果是抽象类就可以不必全部实现。接口之间可以继承。

//接口的定义
public interface 接口名{
	//类常量
	...
	//类方法
	public study();
	public play();
}
//接口之间的继承
public interface 接口名1 extended 接口名{
	//增加的类常量
	...
	//增加的类方法
	...
}
//类和接口之间的继承
public (absract)class 类名 implement 接口名{
	//增加本类的方法和属性
	...
	//实现接口定义的方法
	...
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值