我想创建一个依赖于另一个界面功能的界面.例如,我正在制作:
interface IHealth {
}
interface IHealthBar {
}
Run Code Online (Sandbox Code Playgroud)
附加的实体IHealthBar将需要IHealth一个先决条件.我如何在C#中声明?
更新
继承不是这里的答案.Health栏依赖于Health的一条信息,而不是整个实施.IHealth有健康吧,IHealthBar不是健康.
我没有意识到为什么这段代码有效?
interface ISumCalculator
{
int Calc( int x, int y );
}
interface IProductCalculator
{
int Clac ( int x, int y );
}
class Calculator : ISumCalculator, IProductCalculator
{
public int Calc(int x, int y)
{
throw new NotImplementedException();
}
public int Clac(int x, int y)
{
throw new NotImplementedException();
}
}
Run Code Online (Sandbox Code Playgroud) 抽象类可以由另一个类继承,并要求人们覆盖抽象函数,抽象属性等.
一个接口也可以由另一个类实现,也需要人们实现函数,属性,索引器等.
我找到的唯一不同是Visual Studio足够聪明,可以自动生成此接口的必要成员.
那么,有什么不同?
谢谢〜
为什么我必须Thread在内部类中扩展而不是实现Runnable
以下代码有效: -
class Outer{
Inner innerObj;
Outer(){
innerObj = new Inner();
}
public void begin(){
innerObj.start();
}
class Inner extends Thread{
Inner(){
System.out.println("Thread initialized!");
}
public void run(){
System.out.println("Thread running!");
}
}
}
class Driver{
public static void main(String[] args){
Outer o1 = new Outer();
o1.begin();
}
}
Run Code Online (Sandbox Code Playgroud)
但是使用a Runnable会导致编译错误: -
class Outer{
Inner innerObj;
Outer(){
innerObj = new Inner();
}
public void begin(){
innerObj.start();
}
class Inner implements Runnable{
Inner(){
System.out.println("Thread initialized!");
}
public …Run Code Online (Sandbox Code Playgroud) Eclipse给我一个返回类型不兼容的错误,我已经覆盖了一个继承的方法.
我有一个通用的SomeQueue类,它扩展了LinkedList并实现了泛型,这是我的通用SomeList类
public abstract class SomeQueue<T> extends LinkedList<T> implements SomeList<T>{
private int capacity=100;
public SomeQueue(){
super();
Queue<E> tqueue=new LinkedList<T>();
T front=null;
T back=null;}
@Override
public boolean isEmpty(){}
@Override
public E get(int index){}
@Override
public int size(){}
@Override
public void add(T thing){}
@Override
public E removeEnd(){}
@Override
public void addFirst(T thing){}
@Override
public T remove(int index){}
}
Run Code Online (Sandbox Code Playgroud)
这是我的SomeList界面
public interface SomeList<T>{
public boolean isEmpty();
public T get(int index);
public int size();
public void add(T item);
public T removeEnd();
public void addFirst(T …Run Code Online (Sandbox Code Playgroud) 在.Net中,您可以使用以下代码执行此操作
Public class MyClass:ISomeInterface, SomeBaseClass
Run Code Online (Sandbox Code Playgroud)
在Java中可以做类似的事吗?
我的代码如下
public class InputHander extends OnTouchListener implements IControlHandler
Run Code Online (Sandbox Code Playgroud)
但是我收到了关于OnTouchListener的错误"没有预期接口"
我正在尝试编写C++ 11冒名顶替者(最好由@jrok称为,因为这些类没有像包装器那样的字段),对于一堆C"类",类似于:
extern "C" {
struct cfoo;
cfoo * cfoo_new();
void cfoo_free(cfoo *);
int cfoo_bar(cfoo *, int);
} // extern "C" {
class Foo final {
Foo() = delete; // Prevents
Foo(Foo &&) = delete; // construction
Foo(const Foo &) = delete; // of this
Foo & operator=(Foo &&) = delete; // C++
Foo & operator=(const Foo &) = delete; // object
public: /* Methods: */
int bar(int v) noexcept { return cfoo_bar(cPtr(), v); }
cfoo * cPtr() noexcept { …Run Code Online (Sandbox Code Playgroud) 正如标题中所述:为什么您添加到界面的每个功能都必须公开?
在接口中声明的所有方法都必须是公共的; 这是界面的本质
如上面引用中所述,界面的性质是什么?
如何让一个类实现一个接口,另一个类扩展该类.为什么不能在扩展主类的类中定义必要的方法?
请注意:我确实知道如何使用接口,但我只是想知道为什么这些东西不可能预定义.
我有一个实现接口的类:
public class SQLiteHHSDBUtils : IHHSDBUtils
{
void IHHSDBUtils.SetupDB()
{
. . .
if (!TableExists("AppSettings"))
. . .
bool IHHSDBUtils.TableExists(string tableName)
{
. . .
Run Code Online (Sandbox Code Playgroud)
它找不到自己的兄弟坐在它下面(if (!TableExists()):
"TableExists"这个名称在当前上下文中不存在
它怎么样/为什么它看不到它?