类中只要有抽象方法,该类必须也是抽象的,也必须使用abstract修饰类
抽象类不能实例化,子类必须全部重写父类中的抽象方法才能创建对象
抽象类的构造方法:可以对子类对象进行初始化,或定义一组固定的方法调用逻辑;
抽象类中可以没有抽象方法,定义抽象的目的:不让类创建对象(该类中某些方法体为空),创建对象无意义;
抽象关键字不能与private,final,static共存;
抽象类的应用:
父类定义好方法的调用逻辑,但是方法的具体实现交给子类去完成
示例
Parent类
abstract public class Parent { Parent() { //调用父类中固定好的处理逻辑 fixedMethodInvoke(); } /** * 调用逻辑固定:父类中的调用逻辑已经是确定好的 * 方法的实现不同:method()由不同子类进行不同的实现 */ private void fixedMethodInvoke() { say(); method(); hello(); } public void say() { System.out.println("say"); } public void hello() { System.out.println("hello"); } //具体逻辑由子类来实现 abstract public void method(); }
ChildA
public class ChildA extends Parent { @Override public void method() { System.out.println("ChildA.method()"); } }
ChildB
public class ChildB extends Parent { @Override public void method() { System.out.println("ChildB.method()"); } }
测试
public class Test { public static void main(String[] args) { new ChildA(); System.out.println(); new ChildB(); } /* say ChildA.method() hello say ChildB.method() hello * */ }
========================================================================
继承+抽象 ---> 设计
继承:侧重属性、方法的复用;
抽象:在继承的前提下,侧重于方法的定义,具体实现交给子类完成;
接口:侧重于功能的扩张,可与继承结合使用,达到更强的功能;
public abstract class Employee { private String name; private String id; private double salary; public Employee(String name, String id, double salary) { this.name = name; this.id = id; this.salary = salary; } public abstract void work(); }
public class Programmer extends Employee { public Programmer(String name, String id, double salary) { super(name, id, salary); } @Override public void work() { System.out.println("普通程序员在干活"); } }
public class Manager extends Employee { private double bonus; public Manager(String name, String id, double salary, double bonus) { super(name, id, salary); this.bonus = bonus; } @Override public void work() { System.out.println("经理在设计程序的架构"); } }
相关推荐
在深入探讨Java抽象类与抽象方法之前,我们首先需理解其基本概念以及它们在面向对象编程中的作用。Java作为一种广泛使用的编程语言,提供了多种机制来实现代码的复用性和灵活性,其中抽象类和抽象方法是关键特性之一...
### 详细解析Java中抽象类和接口的区别 #### 引言 在面向对象编程中,Java作为一种广泛应用的编程语言,提供了多种方式来实现抽象的概念。其中最常用的两种机制是抽象类(abstract class)和接口(interface)。这...
在Java语言中,abstract class和interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,...
在Java编程语言中,抽象类是用来作为其他类的基类,它定义了一组抽象方法,这些方法必须在子类中实现。由于抽象类自身不能被实例化,这意味着你不能使用`new`关键字直接创建一个抽象类的对象。然而,尽管不能直接...
在Java语言中,abstract class 和interface 是支持抽象类定义的两种机制区别
通过学习和熟练掌握Java抽象类,开发者能够更好地设计和组织代码,提高代码的灵活性和可维护性,是成为一名优秀Java程序员的必备技能之一。在实际开发中,合理利用抽象类和接口,可以帮助我们构建出高效、可扩展的...
2.java使用抽象类.zip2.java使用抽象类.zip2.java使用抽象类.zip2.java使用抽象类.zip2.java使用抽象类.zip2.java使用抽象类.zip2.java使用抽象类.zip2.java使用抽象类.zip2.java使用抽象类.zip2.java使用抽象类.zip...
4.java使用抽象类.zip4.java使用抽象类.zip4.java使用抽象类.zip4.java使用抽象类.zip4.java使用抽象类.zip4.java使用抽象类.zip4.java使用抽象类.zip4.java使用抽象类.zip4.java使用抽象类.zip4.java使用抽象类.zip...
5.java使用抽象类.zip5.java使用抽象类.zip5.java使用抽象类.zip5.java使用抽象类.zip5.java使用抽象类.zip5.java使用抽象类.zip5.java使用抽象类.zip5.java使用抽象类.zip5.java使用抽象类.zip5.java使用抽象类.zip...
3.java使用抽象类.zip3.java使用抽象类.zip3.java使用抽象类.zip3.java使用抽象类.zip3.java使用抽象类.zip3.java使用抽象类.zip3.java使用抽象类.zip3.java使用抽象类.zip3.java使用抽象类.zip3.java使用抽象类.zip...
1.java定义抽象类.zip1.java定义抽象类.zip1.java定义抽象类.zip1.java定义抽象类.zip1.java定义抽象类.zip1.java定义抽象类.zip1.java定义抽象类.zip1.java定义抽象类.zip1.java定义抽象类.zip1.java定义抽象类.zip...
在 LivingThing 抽象类中,我们定义了一个抽象方法 dance(String dancingStyle),然后在 Human 和 Monkey 中实现了该方法。在 PersonInterface 接口中,我们定义了一个抽象方法, 然后在 Person 类中实现了该方法。 ...
java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例...
### Java抽象类与接口的区别 #### 一、引言 在Java编程中,抽象类(Abstract Class)与接口(Interface)都是实现抽象的关键工具。它们各自有着独特的优势和适用场景,掌握这两者的区别有助于开发者更好地设计系统...
### Java中抽象类和接口的区别与作用详解 #### 一、引言 在Java编程语言中,`abstract class`和`interface`是两种用于定义抽象类的重要机制。这两种机制不仅支持了Java的强大面向对象特性,而且也在实际开发过程中...
在Java中,抽象类是一种不能被实例化的类,它包含抽象方法,这些方法没有具体实现。抽象方法的声明使用`abstract`关键字。创建抽象类的目的是为其他类提供一个公共的基类,这些子类可以共享一些共同的属性和行为。...
JAVA抽象类和抽象方法是Java面向对象程序设计中非常重要的概念,它们是Java编程语言的基础组成部分。抽象类和抽象方法可以帮助开发者更好地组织和设计程序架构,提高代码的可读性和维护性。 一、抽象类的定义和使用...
今天我们要探讨的是JAVA设计中的两个重要模式:抽象类与适配器模式。 首先,我们来理解一下“抽象”。抽象是面向对象编程的核心概念之一,它帮助我们处理对象的复杂性。在Java中,抽象通常通过抽象类来实现。抽象类...