抽像类的概述

抽象类

一.抽象方法与抽象类

1.概念

抽象方法:就是用abstract关键字修饰,并且没有大括号(方法体),直接分号结束的方法。
抽象类:定义了抽方法的类或者用abstract关键字修饰的类就是抽象类。

2.抽象类和抽象方法的语法格式

1.抽象类语法格式:
[权限修饰符] abstract class 类名
{
成员变量;
成员方法;
构造方法;
抽象方法;
}
2.抽象方法语法格式:
[访问修饰符] abstract 返回值类型 方法名(参数表);
例如:
public abstract void show();

3.抽象类概述

1.抽象类可以有成员变量、成员方法以及构造方法。
2.抽象类可以有抽象方法,也可以没有。
3.拥有抽象方法的类必须是抽象类。
4.抽象类的意义不在于实例化而在于被继承,若一个类继承自抽象类必须重写抽象方法,否则该类也是抽象类。

abstract class Animal {
	String str;
	Animal(String s) {
		str = s;
	}
	abstract void eat();
}
class Horse extends Animal {
	String str;
	Horse(String s) {
		super(s);
	}
	void eat() {
		System.out.println("马吃草料!");
	}
}
class Dog extends Animal {
	String str;
	Dog(String s) {
		super(s);
	}
	void eat() {
		System.out.println("够吃骨头!");
	}
}
public class Test {
	public static void main(String[] args) {
		Animal h = new Horse("马");
		Animal d = new Dog("狗");
		h.eat();
		d.eat();
	}
}

输出结果为:

马吃草料!
狗吃骨头!

二、对比抽象类与最终类

1.最终类的特点

1.最终类是指不能被继承的类,即不能再用最终类派生子类。java语言中,最终类用关键字final来修饰。
2.java规定,最终类中的方法都自动成为final()方法。

2.抽象类的特点

1.不能new创建抽象类的实例。
2.与具体类相同的是,抽象类可以有成员变量和成员方法,包括构造方法,但与具体类不同的是,抽象类中可以定义抽象方法。
3.抽象方法只能出现在抽象类中,但抽象类中可以没有抽象方法。
4.抽象类中的所有抽象方法必须在其非抽象子类中加以实现,否则子类也必须声明为抽像类。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 抽象的概念 抽象是在面向对象编程中一种特殊设计的概念,它主要用于提供一组公共的方法,并且其中一些方法的实现留空未定义。这为派生提供了默认的行为框架,同时也允许开发者后续实现具体的逻辑。抽象自身通常无法直接实例化;而是通过其子来使用和实例化。 ### 如何声明抽象 在大多数编程语言中,例如 Java 和 C#,声明抽象的方式主要是通过关键字 `abstract`。以下是一个简单的例子: ```java public abstract class AbstractClass { public abstract void method(); protected void commonMethod() { // 共享的部分代码 } } ``` 在这个例子中,`AbstractClass` 定义了一个抽象方法 `method()` 和一个受保护的 `commonMethod()`。所有继承 `AbstractClass` 的子都必须实现 `method()` 方法,除非该方法也被声明为抽象的。 ### 使用抽象 使用抽象通常是通过其子来进行的。子需要实现抽象中所有的抽象方法。这里举个 Java 的示例: ```java public class ConcreteClass extends AbstractClass { public void method() { // 实现方法的具体逻辑 } public static void main(String[] args) { ConcreteClass instance = new ConcreteClass(); instance.method(); // 正常访问方法 instance.commonMethod(); // 访问受保护的方法 } } ``` ### 抽象与普通的区别 1. **抽象的存在目的**:抽象主要用于提供一个模板,供其他继承并在必要时实现部分抽象方法,以此构建更复杂的系统结构。普通则可用于直接实例化和执行完整功能。 2. **抽象方法**:抽象包含至少一个抽象方法(即方法没有实现体),而普通中的方法都有明确的实现。抽象中的非抽象方法也可以有实现体,但在某些编程语言中为了强调这是一个抽象,也可能故意留下未实现的部分,仅保留骨架结构。 3. **继承**:抽象可以作为多个的基,促进代码复用和模块化设计。而普通更适合作为单点继承的基础,适合较为独立的功能模块。 4. **实例化**:抽象本身不可以直接实例化,只能通过其子实例化。而普通可以直接创建实例对象。 5. **权限控制**:抽象的权限通常设定较高(比如公开),鼓励广泛继承和应用。而普通的权限控制则取决于其设计需求。 抽象作为一种设计模式,对于构建大型、模块化的软件系统有着重要的意义,它能够提高代码的复用性、降低耦合度,并支持灵活的扩展机制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值