abstract(抽象)修饰符,可以修饰类和方法
1, abstract修饰类,会使这个类成为一个抽象类,这个类将不能生成对象实例,可以做为对象引用声明的类型,就是编译时类型,抽象类就相当于一类的半成品,需要子类继承并覆盖其中的抽象方法。
例:
public abstract class Test{
public int test(){
……
}
……….
}
2, abstract修饰方法,会使这个方法变成抽象方法,只有声明(定义)没有实现,实现部分以";"代替。需要子类继承实现(覆盖)。
例:
public abstract class Test{
public abstract int test();//有抽象方法的类一定是抽象类
}
abstract修饰方法就是要求子类覆盖(实现)这个方法。调用时以多态方式调用子类覆盖(实现)的方法,抽象方法必须在其子类中实现,除非子类本身也是抽象类。
注意:
1) 有抽象方法的类一定是抽象类。但是抽象类中不一定都是抽象方法,也可以全是具体方法。abstract修饰符在修饰类时必须放在类名前。
2) 父类是抽象类,其中有抽象方法,那么子类继承父类,并把父类中的所有抽象方法都实现(覆盖)了,子类才有创建对象的实例的能力,否则子类也必须是抽象类。抽象类中可以有构造方法,是子类在构造子类对象时需要调用的父类(抽象类)的构造方法。
修饰符组合使用问题
final和abstract,private和abstract,static和abstract,这些是不能放在一起的修饰符,因为abstract修饰的方法是必须在其子类中实现(覆盖),才能以多态方式调用,以上修饰符在修饰方法时期子类都覆盖不了这个方法,final是不可以覆盖,private是不能够继承到子类,所以也就不能覆盖,static是可以覆盖的,但是在调用时会调用编译时类型的方法,因为调用的是父类的方法,而父类的方法又是抽象的方法,又不能够调用,所以上的修饰符不能放在一起。
抽象(abstract)方法代表了某种标准,定义标准,定义功能,在子类中去实现功能(子类继承了父类并需要给出从父类继承的抽象方法的实现)。
方法一时间想不到怎么被实现,或有意要子类去实现而定义某种标准,这个方法可以被定义为抽象。(abstract)
模板方法模式
用abstract把制订标准和实现标准分开,制定的标准就是模板,实现就是按模板标准来实现,继承模板,实现模板中相应功能的方法。模板中不允许修改的方法用final来修饰,这个方法不能是方法,为保证安全,模板类中不公开的部分
用protected(保护)修饰。
例:
public class TestTemplateMethod{
public static void main(String[] ags){
XiaoPin xp=new RangYiRang();
xp.act();
}
}
abstract class XiaoPin{
protected abstract void jiaoliu();
protected abstract void xushi();
protected abstract void gaoxiao();
protected abstract void shanqing();
public final void act(){
jiaoliu();
xushi();
gaoxiao();
shanqing();
}
}
class ZuYu extends XiaoPin{
protected void jiaoliu(){
System.out.println("ShunKouLiu");
}
protected void xushi(){
System.out.println("ZuDiAnMo");
}
protected void gaoxiao(){
System.out.println("LiHeYouMen");
}
protected void shanqing(){
System.out.println("Sleep...");
}
}
class RangYiRang extends XiaoPin{
protected void jiaoliu(){
System.out.println("XiaogSiNiMenLe");
}
protected void xushi(){
System.out.println("DuChe");
}
protected void gaoxiao(){
System.out.println("MaLuJieHun");
}
protected void shanqing(){
System.out.println("RangYiRang");
}
/*
protected void act(){
jiaoliu();
xushi();
shanqing();
gaoxiao();
}
*/
}
分享到:
相关推荐
1. **Java简介**:Java是由Sun Microsystems开发的,后来被Oracle公司收购。它被设计成“一次编写,到处运行”,这意味着编写的代码可以在任何支持Java的平台上运行,无需重新编译。 2. **Java环境搭建**:学习如何...
接下来,了解Java的基础语法是关键。这包括: 1. **基本数据类型**:如整型(byte, short, int, long)、浮点型(float, double)、字符型(char)和布尔型(boolean)。 2. **变量**:声明和初始化变量,理解其作用...
【标题】"JAVA_WEB开发教程(前九章)"涵盖了Java Web开发的初步阶段,旨在为初学者提供一套系统的入门教程。本教程通过九个章节深入浅出地讲解了Java Web开发的基础概念和技术,虽然不包含完整的教材,但对前九章的...
这里不仅有Java基础知识的详细介绍,还有高级特性的深入解析,是Java开发者深入了解Java内部机制的首选之地。 ### 2. CN-Java 网址:http://www.cn-java.com/ CN-Java是一个专注于Java技术的中文社区,提供了丰富...
* Java开发职业发展道路:了解Java开发职业的发展道路,如从初级开发到高级开发的发展过程。 * Java开发职业规划:了解Java开发职业的规划,如职业发展目标、职业发展方向等。 * Java开发职业技能:了解Java开发职业...
Java制作的输入法是一种利用Java编程语言开发的计算机输入法软件。...在提供的`CantoInput.java`文件中,我们可以看到实现输入法功能的具体Java代码,通过阅读和学习这个文件,可以更具体地了解Java输入法的实现细节。
下面我们将详细探讨Java2Pas的工作原理、使用方法以及其在IT领域的应用。 首先,Java和Delphi是两种不同的编程语言,它们有着不同的语法结构和编程模型。Java是一种面向对象的语言,由Sun Microsystems(现已被...
通过阅读《Java核心编程思想》,读者不仅能全面掌握Java语言,还能了解到许多最佳实践和设计模式,从而在实际项目开发中游刃有余。这本书的2010最新版可能还包含了Java新特性的介绍,比如Java 7和8的Lambda表达式、...
Java 8快速入门教程为有一定Java基础的读者提供了一个指南,帮助他们快速了解并应用Java 8的新特性。无论你是想通过实践学习如何使用新的日期时间API,还是想掌握函数式编程的核心概念,本文都可以作为你的起点。...
《韩顺平30天学Java》是一门针对初学者设计的Java编程课程,旨在帮助学员在短短一个月的时间内掌握Java编程基础。该课程由知名IT教育专家韩顺平教授,以其独特的教学风格和深入浅出的讲解方式,使得复杂的编程概念变...
对于初学者来说,这是了解Java API的起点。 2. **类和接口**:这是文档的主体部分,详细列出了Java平台提供的所有类和接口。每个条目都包含了类或接口的定义、构造方法、方法、常量等详细信息。例如,`java.lang....
1. **Java语言概述**:了解Java的历史、特性以及其在软件开发中的应用。Java是由Sun Microsystems的詹姆斯·高斯林(James Gosling)在1995年创建的,现在由Oracle公司维护。它的主要特点包括平台无关性(Write Once...
首先,我们需要了解Java数据库连接(JDBC)API,这是Java与数据库交互的标准接口。Java通过JDBC驱动程序与特定数据库通信。对于Sybase SQL Anywhere,我们需要的是对应的JDBC驱动,这里提供的`jconn3.jar`就是Sybase...
了解Matomo Java Tracker有助于提升Java开发者在Web分析领域的专业技能,对于面试来说,可以展示对用户行为跟踪、数据分析以及如何将这些知识应用于实际项目的能力。以下是一些可能的面试问题: 1. 如何使用Matomo ...
帮助你快速了解java-Swing,附带程序图例,关键代码
1. **Java简介**:介绍Java的历史、特点以及其在软件开发中的应用领域。Java由Sun Microsystems的詹姆斯·高斯林(James Gosling)于1995年推出,其设计目标是“一次编写,到处运行”。 2. **环境搭建**:讲解如何...
本文档将带你从零开始,逐步了解Java编程的基础知识。 一、从面向过程编程到面向对象编程的思维转变 在面向过程编程中,程序设计侧重于过程的顺序执行,即通过一系列步骤处理数据。而面向对象编程(OOP)则以数据为...
在IT行业中,视频压缩是一项重要的技术,特别是在大数据和互联网传输领域。Java作为一种广泛使用的编程语言,也提供了多种方法来处理视频压缩。...对于想要深入这一领域的开发者来说,了解并实践这些技术是十分必要的。
#### Java语言简介与发展历程 Java作为一种重要的编程语言,在计算机科学领域有着广泛的应用。由标题“第一章认识Java”以及描述中的“Java发展”,我们可以从中提炼出关于Java的基本信息及其发展历程的关键点。 #...