Java抽象类
1 什么是Java抽象类
用abstract关键字声明的类在Java中被称为抽象类。抽象类中可以包含抽象方法和非抽象方法。
在学习Java抽象类之前,让我们首先了解Java中的抽象。
2 Java中的抽象
抽象是隐藏实现细节并仅仅向用户提供功能的过程。
在现实生活中,我们也可以看到抽象的存在,例如,你在日常发生Email邮箱的过程中,我们只管输入邮箱的内容进行发送给对方,而不用关心Email邮件传输的内部细节。
抽象使你可以专注于对象的功能,而不是对象的细节。
3 实现抽象的方式
有两种方法可以在Java中实现抽象:
- 抽象类
- 接口
4 Java的抽象类
声明为abstract的类称为抽象类。抽象类可以包含抽象和非抽象方法。抽象类需要扩展并实现其方法。需要注意的是,抽象类是无法实例化的。
抽象类的一些要点:
- 抽象类必须使用abstract关键字声明。
- 抽象类可以包含抽象和非抽象方法。
- 抽象类无法实例化。
- 抽象类也可以包含构造函数和静态方法。
- 抽象类可以包含final方法,这些final方法将限制子类无法更改方法的内容。
抽象类的语法:
abstract class A{}
5 Java的抽象方法
声明为abstract且没有实现的方法称为抽象方法。
5.1 抽象方法的语法
abstract void printStatus();//抽象方法是没有方法体的
5.2 抽象方法的示例
在下面示例中,Bike是一个抽象类,仅包含一个抽象方法。它的实现由Honda类提供。
/**
* 一点教程网 - http://www.yiidian.com
*/
abstract class Bike{
abstract void run();
}
class Honda4 extends Bike{
void run(){
System.out.println("本田自行车在跑...");
}
public static void main(String args[]){
Bike obj = new Honda4();
obj.run();
}
}
输出结果为:
本田自行车在跑...
6 抽象类的实际应用1
在本示例中,Shape是抽象类,其实现由Rectangle和Circle类提供。
通常,我们不了解实现类(对最终用户隐藏),而实现类的对象由Factory方法提供。
Factory类中包含一个返回类的实例的工厂方法。后面章节我们再学习工厂方法的知识。
TestAbstraction1.java:
/**
* 一点教程网 - http://www.yiidian.com
*/
abstract class Shape{
abstract void draw();
}
//在实际情况下,实现是由其他人提供的,即对用户是未知的
class Rectangle extends Shape{
void draw(){
System.out.println("绘制长方形");
}
}
class Circle1 extends Shape{
void draw(){
System.out.println("绘制圆形");
}
}
//在实际情况下,方法是由程序员或用户调用的
class TestAbstraction1{
public static void main(String args[]){
Shape s=new Circle1();//在实际情况下,对象是通过方法(例如getShape() 方法)提供的
s.draw();
}
}
输出结果为:
绘制圆形
7 抽象类的实际应用2
TestBank.java:
/**
* 一点教程网 - http://www.yiidian.com
*/
abstract class Bank{
abstract int getRateOfInterest();
}
class ICBC extends Bank{
int getRateOfInterest(){
return 7;
}
}
class CCB extends Bank{
int getRateOfInterest(){
return 8;
}
}
class TestBank{
public static void main(String args[]){
Bank b;
b=new ICBC();
System.out.println("贷款利率为: "+b.getRateOfInterest()+" %");
b=new CCB();
System.out.println("贷款利率为: "+b.getRateOfInterest()+" %");
}
}
输出结果为:
贷款利率为: 7 %
贷款利率为: 8 %
热门文章
优秀文章