我想写一个抽象方法,但编译器持续给出了这个错误:
抽象方法不能有一个体
我有这样的方法:
public abstract boolean isChanged() {
return smt else...
}
Run Code Online (Sandbox Code Playgroud)
这有什么不对?
我有四节课.Request,DerivedRequest,Handler,DerivedHandler.Handler类具有以下声明的属性:
public abstract Request request { get; set; }
Run Code Online (Sandbox Code Playgroud)
DerivedHandler需要覆盖此属性,以便它返回DerivedRequest:
public override DerivedRequest request { get; set; }
Run Code Online (Sandbox Code Playgroud)
有没有人对如何使这项工作有任何想法?
我有这个界面:
public interface Animal {
public void Eat(String name);
}
Run Code Online (Sandbox Code Playgroud)
这段代码实现了这个接口:
public class Dog implements Animal {
public void Eat(String food_name) {
System.out.printf(food_name);
}
public static void main(String args[]) {
Animal baby2 = new Dog(); //HERE!!!!!!!!!!!!!!!!!!!!!!
baby2.Eat("Meat");
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,为什么代码有效?无法实例化接口.然而在这种情况下,界面被实例化(标记为"HERE !!!!!!!!!!!!!").
这里发生了什么?
我有一个抽象的基本控制器,它有一个构造函数,我希望在构建控制器时由autofac填充.
public abstract class BaseController : Controller
{
protected ILogger { get; private set; }
protected BaseController()
{
}
protected BaseController(ILogger logger)
{
Logger = logger;
}
}
Run Code Online (Sandbox Code Playgroud)
当我从它派生一个控制器时,这似乎不起作用.
当我从控制器显式地显式调用构造函数时,我只能使它工作.这是正确的方法吗?
public class PublicController : BaseController
{
public PublicController()
{
}
public PublicController(ILogger logger) : base(logger)
{
}
}
Run Code Online (Sandbox Code Playgroud)
此外,使用mvc集成程序集,似乎没有办法共享容器供其他类进行自己的解析.我在某处读到这不鼓励,为什么不呢?这只是为了解耦任何单个ioc框架的依赖性吗?构造函数注入是在heirachy中填充依赖的唯一方法.
谢谢
理论上我理解Java中没有抽象静态的原因,例如为什么静态方法在Java中不是抽象的.
但是我如何解决这样的问题呢?
我的应用程序使用几种类型的文件,我想分配静态属性,如该文件类型的描述(如"数据文件",另一种是"配置文件"等).显然,我会把它放到一个静态字符串中,以便在不实例化文件的情况下访问描述(对GUI文件很有用).另一方面,显然所有文件类型都应该有一些常见的方法getStatus(),显然我想从一个共同的超类继承MyFileType.
getDescription() 当然在超类中是抽象的.
尝试使用超类和接口的组合,但类似的问题:不允许静态实现抽象方法.
Java大师将如何解决这个问题?我想创建它真的是一个糟糕的实现吗?
非常感谢,Philipp
Class A有run()方法和接口B也有run()方法.问题很简单,哪种run()方法在Main课堂上被覆盖,我们将如何证明这一点?为什么此代码中没有冲突(编译时错误)?
class A{
void run(){System.out.println("A class");}
}
interface B{
void run();
}
class Main extends A implements B{
public static void main(String args[]){
Main m = new Main();
m.run();
}
// Overridding method
public void run(){
System.out.println("run method");
}
}
Run Code Online (Sandbox Code Playgroud) 让抽象类定义实例变量是一种好习惯吗?
public abstract class ExternalScript extends Script {
String source;
public abstract void setSource(String file);
public abstract String getSource();
}
Run Code Online (Sandbox Code Playgroud)
然后子类ExternalJavaScript.class将自动获取源变量,但是如果所有子类本身都定义了源代码而不是继承,我觉得读代码更容易.
你有什么建议?
/亚当
我知道它可以用Java完成,因为我过去曾广泛使用过这种技术.Java中的一个例子如下所示.(附加问题.这种技术被称为什么?如果没有名称,很难找到这样的例子.)
public abstract class Example {
public abstract void doStuff();
}
public class StartHere{
public static void main(string[] args){
Example x = new Example(){
public void doStuff(){
System.out.println("Did stuff");
}
};
x.doStuff();
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我的主要问题是,这也可以在C#中完成,如果是这样,怎么样?
我想只强制从基本抽象类在给定属性上实现C#getter.如果需要,派生类可以为该属性提供一个setter,以供公共使用静态绑定类型.
给出以下抽象类:
public abstract class Base
{
public abstract int Property { get; }
}
Run Code Online (Sandbox Code Playgroud)
如果我想要一个也实现了setter的派生类,我可以天真地尝试:
public class Derived : Base
{
public override int Property
{
get { return field; }
set { field = value; } // Error : Nothing to override.
}
private int field;
}
Run Code Online (Sandbox Code Playgroud)
但是后来我遇到语法错误,因为我试图覆盖不存在的setter.我尝试了其他方式,例如声明基本setter私有等等,我仍然偶然发现所有类型的错误阻止我这样做.必须有办法做到这一点,因为它不会破坏任何基类合同.
顺便说一句,它可以通过接口完成,但我真的需要默认实现.
我经常偶然发现这种情况,我想知道是否有一个隐藏的C#语法技巧,否则我将使用它并实现一个手动SetProperty()方法.
我正在使用一组类的接口.我不过是因为我想对于任何一个问题,visibility在接口被允许(即:public,protected和private).
我需要父方法只受保护,我需要子方法是私有的,但我得到错误说
致命错误:接口方法的访问类型Baz :: qux()必须在<带Baz/Bar>的文件中省略."
我尝试在接口中指定其他可见性方法Baz并删除public,但它们都失败了.
有没有办法可以通过界面来做到这一点?如果没有,那么有没有办法可以宣布它abstract,我也尝试过,但失败了.
interface Baz
{
public function qux();
}
class Bar implements Baz
{
protected function qux()
{
//do foo
}
}
class Foo extends Bar implements Baz
{
private function qux()
{
parent::qux();
}
}
Run Code Online (Sandbox Code Playgroud) abstract ×10
java ×5
c# ×3
interface ×3
methods ×2
overriding ×2
autofac ×1
class ×1
constructor ×1
derived ×1
inheritance ×1
oop ×1
php ×1
properties ×1
static ×1
variables ×1