java - 子类中重写父方法。子方法不执行任何操作

标签 java android overriding super

我遇到了一些麻烦。我遵循了所有在线指南,展示了如何重写子类中的父方法。我已经完成了我被告知要做的所有事情,但我的子函数什么也没做。

我的MainActivity(父级)类:

package com.example.flashcards;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    DatabseHelper DB = new DatabseHelper(this);

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        changeText();
        changeText2();
    };
    public void changeText(){}
    public void changeText2(){}
        String [] columns = new String[] {
                DatabseHelper.FLASHCARD_QUESTION,
                DatabseHelper.FLASHCARD_ANSWER
        };

    @Override
    public void onClick(View v) {

    }
}

我的 child 类(class)(TextC)

package com.example.flashcards;

import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class TextC extends MainActivity {

    @Override
    public void changeText() {
        super.changeText();
        final String[] revertText = {"H2O", "What elements does water consist of?"};

        final TextView textChange = findViewById(R.id.flashcard1);
        Button change = findViewById(R.id.answer1);

        change.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int random = (int) (Math.random() * revertText.length);
                textChange.setText(revertText[random]);
            }
        });
    }

    public void changeText2() {
        super.changeText2();
        final String[] revertText = {"2,200° F", "How hot does lava get?"};

        final TextView textChange = findViewById(R.id.flashcard2);
        Button change = findViewById(R.id.answer2);

        change.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int random = (int) (Math.random() * revertText.length);
                textChange.setText(revertText[random]);
            }
        });
    }
}

我的changeText()函数什么也没做。我没有收到任何错误,所以我不知道我做错了什么。我需要为子类创建一个 onCreate 方法吗?但我正在扩展具有它的 MainActivity。

关于为什么我的方法重写不起作用有什么想法吗?

最佳答案

有了继承和重写的概念,您需要在子类中重写 onCreate 函数。从这个重写的方法中,您可以调用 super.onCreate,也可以从子类中执行 this.chnageText 和 this.changeText2。

否则,当您调用 onCreate 函数时,它将仅从父类(super class)调用changeText 和changeText2。

在您的 child 类(class)

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        this.changeText();
        this.changeText2();
    };

关于java - 子类中重写父方法。子方法不执行任何操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58602148/

相关文章:

android - Android 应用程序中的登录和 Facebook 集成问题

android - 布局更改未反射(reflect)在应用程序中

java - 子类和父类中的方法重写可以有不同数量的参数?参数数量可以不同吗?

ios - 如何在 segue 中获取选定的 TableView 单元格行?

java - 枚举持续时间问题

java - 使用maven构建geoserver(monitor-hibernate)

java - NetBeans 缺少项目类别

Android 多次使用相同的 fragment - 如何有不同的点击 Action

python - 在 Python 中调用基类的类方法

java - 数据库模型国际化玩法框架