gpt4 book ai didi

java - 创建自定义覆盖方法问题

转载 作者:行者123 更新时间:2023-12-01 18:59:59 24 4
gpt4 key购买 nike

我创建了如下所示的类。但 Override 方法没有被调用。有什么我错过的吗?否则我需要添加任何关键字(如 Virtual)来用作覆盖?

MyWebView.java

package com.example.stackoverflow;    

import android.content.Context;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.LinearLayout;

public class MyWebView extends WebView
{
WebView localView;
static Context localcontext;
A aclass;

public MyWebView(Context context)
{
super(context);
localcontext=context;
}

public LinearLayout init()
{
LinearLayout layout=new LinearLayout(localcontext);
localView=new WebView(localcontext);
localView.setWebViewClient(new MyClient());
aclass=new A();
layout.addView(localView);
return layout;
}

class MyClient extends WebViewClient
{
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
aclass.startMyMethod();
return super.shouldOverrideUrlLoading(view, url);
}
}

}

A.java

package com.example.stackoverflow;

import android.os.Bundle;
import android.widget.LinearLayout;
import android.app.Activity;

public class A extends Activity
{

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MyWebView view=new MyWebView(this);
LinearLayout layout = view.init();
view.loadUrl("https://www.google.co.in/");
setContentView(layout);
}

public void startMyMethod()
{
System.out.println("ParentMethod");
}
}

B.java(MainActivity)

package com.example.stackoverflow;

import android.os.Bundle;

public class B extends A {

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}

@Override
public void startMyMethod() {
System.out.println("ChildMethod");
super.startMyMethod();
}

}

Note: class B is client side class. others two in jar file. how can i use new B() inside jar file(library source). name B may be changed. If parent method is overridden, then parent content should not be executed

最佳答案

Java没有像virtual这样的关键字,默认情况下所有java非静态方法都是虚拟的。请参阅http://en.wikipedia.org/wiki/Virtual_function#Java .

@Override 注解用于指示编译器您正在重写父类(super class)方法。请参阅here

A a =new A();
a.startMyMethod(); // calls A.startMyMethod()

A b = new B(); // Object reference of type A and Object of B
a.startMyMethod(); // calls B.startMyMethod()

关于java - 创建自定义覆盖方法问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12616384/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com