Java抽象类

本文介绍了Java中抽象类的基本概念,包括抽象类定义、声明、抽象方法和规范。抽象类不能实例化,但可以有构造方法,且必须由子类继承。子类继承抽象类后,若未实现所有抽象方法,则子类也必须定义为抽象类。文章通过实例展示了抽象类的使用和子类覆写抽象方法的情况。

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

一、抽象类的基本概念

1.抽象类定义

普通类是一个完善的功能类,可以直接产生实例化对象,并且在普通类中可以包含有构造方法、普通方法、static方法、常量和变量等内容。如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
抽象类除了不能实例化对象之外,类的其他功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。

2.抽象类的声明

abstract class 类名{//抽象类
}

3.抽象方法

abstract class 类名{//抽象类
public abstract void 方法名();//抽象方法,只声明而未实现
}

4.抽象类的规范

在抽象类的使用中有以下原则:

  • 抽象类本身是不能直接进行实例化操作的,即:不能直接使用关键字new完成;
  • 抽象类必须有子类,使用extends继承,一个子类只能继承一个抽象类;
  • 一个抽象类必须被子类所继承,被继承的子类(如果不是抽象类)则必须覆写(重写)抽象类中的全部抽象方法(如果子类没有实现父类的抽象方法,则必须将子类也定义为abstract类);
  • 抽象类可以有构造方法,子类对象实例化的时候的流程与普通类的继承是一样的,都是要先调用父类中的构造方法(默认是无参的),之后再调用子类自己的构造方法。

二、抽象类的使用

范例:

abstract class A{

	public void fun(){
		System.out.println("存在方法");
	}
	public abstract void print();
}
public class HelloWorld{
	public static void main(String[] args) {
		A a=new A();
	}
}

运行:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
	Cannot instantiate the type A

	at HelloWorld.main(HelloWorld.java:11)

由此可知,A是抽象的,无法直接进行实例化操作。
改写之后范例:


abstract class A{

	public void fun(){
		System.out.println("存在方法");
	}
	public abstract void print();//抽象方法,没有方法体,有abstract关键字做修饰
}
//单继承
class B extends A{
	@Override
	public void print() {
		System.out.println("Hello world !");
	}
}

public class HelloWorld{
	public static void main(String[] args) {
		A a=new B();
		a.print();
	}
}

运行结果:

Hello world !

由此我们可以发现:
(1)抽象类继承子类里面有明确的方法覆写要求,而普通类可以有选择性的来决定是否需要覆写;
(2)抽象类实际上就比普通类多了一些抽象方法,其他组成部分和·普通类完全一样;
(3)普通类对象可以直接实例化,但抽象类的对象必须经过向上转型之后才可以得到。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值