假设我有两个类,A和B。A类定义为抽象类,而B扩展了这个抽象类,最后我测试了结果,两个类都属于同一包。
public abstract class A {
protected abstract void method1();
protected void method2() {
System.out.println("This is Class A's method");
}
}
public class B extends A {
@Override
protected void method1() {
System.out.println("This is B's implementaiton of A's method");
}
}
现在,当我测试它们时:
B b = new B();
b.method1();
b.method2();
我得到预期的输出:
This is B's implementaiton of A's method
This is Class A's method
问题:
@Override
关键字的目的是什么,因为如果我省略它,它仍然可以正常工作。 method2()
在B中实现。然后输出更改为B中的用法。这是否还会覆盖父类方法?那么在A类中将方法显式定义为 抽象 的目的是什么?@Override
@Override在Java 5中引入(在Java 6中进行了扩展)。这只是提供信息。它说:“我想重写父类或接口中已经存在的内容。
IDE就像Eclipse可以在没有此类父方法的情况下警告您(例如,如果您拼写错误的名称)。在那种情况下,您的方法将不会被调用(因为拼写错误)。
但是,不必对此太担心。
抽象类与接口
抽象类允许您定义基本功能,而未定义的部分将保留。接口不允许您执行任何操作。您可以对所有情况进行编程,除了在每种情况下真正改变的部分。因此,在需要时,您可以继承并实现缺少的部分。
覆盖两种方法
是。在Java中,您可以覆盖所有未在父类中显式声明为final的方法。没关系。如果要使其不可修改,则可以将其声明为final。例如,如果要声明订单,则可以:
public abstract class Ordering<X>
{
abstract boolean isLower(X a, X b);
abstract boolean isEquals(X a, X b);
final boolean isGreater(X a, X b) {
return !isLower(a, b) && !isEquals(a, b);
}
}
当然,覆盖isGreater以另一种更有效的方式实现它可能是有道理的(想象一下比较起来会很昂贵)。但是在某些情况下,您想提供基本的已经实现的功能(然后是抽象类比接口更好的情况),或者想要强制执行某些实现(然后,当final关键字显示有用时)。
问题内容: 我对 抽象类 及其使用有一些疑问。我了解有关它们的基础知识;例如,它们不能被实例化,它们可以具有具体和抽象的方法,…但是我想我想知道的是, 它们在生命中(在软件工程中)起什么作用? Java中抽象类的目的是什么?为什么和何时应该使用Abstract类?如果可以使用普通的类然后继承它,为什么还要继承一个抽象类?使用抽象类如何使我们的生活更轻松?它会提供更好的可维护性吗?更灵活?… 顺便说
问题内容: 我是一名 Java 开发人员,对Object Orientation概念有很好的了解( 或者也许我这样认为 )。现在我正在学习设计模式(从头开始设计模式)。我一直在阅读有关OOPS概念抽象的文章,以简要地理解它,而阅读更多有关它的内容,使我比以前更加困惑。 据我了解,抽象是指隐藏程序的内部细节,同时将接口暴露给其他程序员,而无需担心内部细节。但是我不明白 抽象类如何适应这种抽象概念,其
本文向大家介绍详解Android中的Context抽象类,包括了详解Android中的Context抽象类的使用技巧和注意事项,需要的朋友参考一下 关于Context我们首先应该知道: (1)它描述的是一个应用程序环境的信息,即上下文。 (2)该类是一个抽象(abstract class)类,Android提供了该抽象类的具体实现类(后面我们会讲到是ContextIml类)。 (3)通过它我们可以
Java 语言提供了两种类,分别为具体类和抽象类。前面学习接触的类都是具体类。这一节介绍一下抽象类。 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,那么这样的类称为 抽象类。 在 Java 中抽象类的语法格式如下: 其中,abstract 表示该类或该方法是抽象的;class_name 表示抽象类
本小节我们将学习 Java 中的抽象类,你将了解到抽象类的概念和特点,抽象类在程序设计时的应用场景,什么是抽象方法,抽象方法有什么特点,如何声明一个抽象方法等内容。 1. 概念和特点 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。 值得注意的是,一个抽象类不能直接实例化,但类的
问题内容: 什么是Java中的“抽象类”? 问题答案: 抽象类是无法实例化的类。通过创建可以实例化的继承子类来使用抽象类。抽象类为继承的子类做一些事情: 定义继承子类可以使用的方法。 定义继承子类必须实现的抽象方法。 提供一个公共接口,该接口允许子类与所有其他子类互换。 这是一个例子: 请注意,“ abstractMethod()”没有任何方法主体。因此,你不能执行以下操作: 没有实现的方法!因此