`
schy_hqh
  • 浏览: 555834 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

(基础)java中的抽象类,抽象方法

 
阅读更多

类中只要有抽象方法,该类必须也是抽象的,也必须使用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中抽象类和接口的区别

    ### 详细解析Java中抽象类和接口的区别 #### 引言 在面向对象编程中,Java作为一种广泛应用的编程语言,提供了多种方式来实现抽象的概念。其中最常用的两种机制是抽象类(abstract class)和接口(interface)。这...

    Java中抽象类的学习总结

    ### Java中抽象类的学习总结 #### 一、抽象类的概念与特点 抽象类是Java编程语言中的一个重要概念,主要用于提供一种部分实现的功能,并允许子类完成剩余的实现。抽象类的特点如下: - **抽象方法**: 在定义Java...

    Java中抽象类和接口的区别

    在Java语言中,abstract class和interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,...

    Java实例化一个抽象类对象的方法教程

    在Java编程语言中,抽象类是用来作为其他类的基类,它定义了一组抽象方法,这些方法必须在子类中实现。由于抽象类自身不能被实例化,这意味着你不能使用`new`关键字直接创建一个抽象类的对象。然而,尽管不能直接...

    JAVA中抽象类和接口的区别

    在Java语言中,abstract class 和interface 是支持抽象类定义的两种机制区别

    Java 抽象类

    通过学习和熟练掌握Java抽象类,开发者能够更好地设计和组织代码,提高代码的灵活性和可维护性,是成为一名优秀Java程序员的必备技能之一。在实际开发中,合理利用抽象类和接口,可以帮助我们构建出高效、可扩展的...

    2.java使用抽象类.zip

    2.java使用抽象类.zip2.java使用抽象类.zip2.java使用抽象类.zip2.java使用抽象类.zip2.java使用抽象类.zip2.java使用抽象类.zip2.java使用抽象类.zip2.java使用抽象类.zip2.java使用抽象类.zip2.java使用抽象类.zip...

    4.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使用抽象类.zip

    5.java使用抽象类.zip5.java使用抽象类.zip5.java使用抽象类.zip5.java使用抽象类.zip5.java使用抽象类.zip5.java使用抽象类.zip5.java使用抽象类.zip5.java使用抽象类.zip5.java使用抽象类.zip5.java使用抽象类.zip...

    3.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定义抽象类.zip

    1.java定义抽象类.zip1.java定义抽象类.zip1.java定义抽象类.zip1.java定义抽象类.zip1.java定义抽象类.zip1.java定义抽象类.zip1.java定义抽象类.zip1.java定义抽象类.zip1.java定义抽象类.zip1.java定义抽象类.zip...

    Java 接口和抽象类

    在 LivingThing 抽象类中,我们定义了一个抽象方法 dance(String dancingStyle),然后在 Human 和 Monkey 中实现了该方法。在 PersonInterface 接口中,我们定义了一个抽象方法, 然后在 Person 类中实现了该方法。 ...

    java抽象类与接口实例java抽象类与接口实例

    java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例...

    java抽象类与接口区别

    ### Java抽象类与接口的区别 #### 一、引言 在Java编程中,抽象类(Abstract Class)与接口(Interface)都是实现抽象的关键工具。它们各自有着独特的优势和适用场景,掌握这两者的区别有助于开发者更好地设计系统...

    Java中抽象类和接口的区别与作用详解

    ### Java中抽象类和接口的区别与作用详解 #### 一、引言 在Java编程语言中,`abstract class`和`interface`是两种用于定义抽象类的重要机制。这两种机制不仅支持了Java的强大面向对象特性,而且也在实际开发过程中...

    java 抽象类与接口的练习

    在Java中,抽象类是一种不能被实例化的类,它包含抽象方法,这些方法没有具体实现。抽象方法的声明使用`abstract`关键字。创建抽象类的目的是为其他类提供一个公共的基类,这些子类可以共享一些共同的属性和行为。...

    JAVA抽象类和抽象方法(abstract)实例分析

    JAVA抽象类和抽象方法是Java面向对象程序设计中非常重要的概念,它们是Java编程语言的基础组成部分。抽象类和抽象方法可以帮助开发者更好地组织和设计程序架构,提高代码的可读性和维护性。 一、抽象类的定义和使用...

    JAVA设计模式(抽象类与适配器模式)

    今天我们要探讨的是JAVA设计中的两个重要模式:抽象类与适配器模式。 首先,我们来理解一下“抽象”。抽象是面向对象编程的核心概念之一,它帮助我们处理对象的复杂性。在Java中,抽象通常通过抽象类来实现。抽象类...

Global site tag (gtag.js) - Google Analytics