我已经看过几次提到这个,我不清楚这是什么意思.你何时以及为何会这样做?
我知道接口有什么作用,但事实上我不清楚这一点让我觉得我错过了正确使用它们.
如果你这样做是这样的:
IInterface classRef = new ObjectWhatever()
Run Code Online (Sandbox Code Playgroud)
你可以使用任何实现的类IInterface吗?你什么时候需要这样做?我唯一能想到的是,如果你有一个方法,你不确定除了实现之外将传递什么对象IInterface.我想不出你需要多久做一次.
另外,你怎么能写一个接受实现接口的对象的方法?那可能吗?
所以我想说我有这个界面:
public interface IBox
{
public void setSize(int size);
public int getSize();
public int getArea();
//...and so on
}
Run Code Online (Sandbox Code Playgroud)
我有一个实现它的类:
public class Rectangle implements IBox
{
private int size;
//Methods here
}
Run Code Online (Sandbox Code Playgroud)
如果我想使用IBox接口,我实际上无法创建它的实例,方式如下:
public static void main(String args[])
{
Ibox myBox=new Ibox();
}
Run Code Online (Sandbox Code Playgroud)
对?所以我实际上必须这样做:
public static void main(String args[])
{
Rectangle myBox=new Rectangle();
}
Run Code Online (Sandbox Code Playgroud)
如果这是真的,那么接口的唯一目的是确保实现接口的类如接口所描述的那样在其中获得了正确的方法?或者是否还有其他任何接口用途?
编写课程时界面的目的是什么?
这是我在网上看到的一个例子.
<?php
interface Chargeable {
public function getPrice();
}
class Employee implements Chargeable {
protected $price;
public function getPrice() {
return $this->price;
}
}
$product = new Employee();
?>
Run Code Online (Sandbox Code Playgroud) 我正在练习继承.
我有两个类似的类,我想要同化为一个数组,所以我想使用Object类作为超类,因为一切都是Object的一个子级.
所以,例如我将T类和CT类放入一个名为all的数组中:
Object all[] = new Object[6];
all[0] = T1;
all[1] = CT2;
all[2] =T3;
all[3] = CT1;
all[4] = T2;
all[5] = CT3;
Run Code Online (Sandbox Code Playgroud)
我跳过了声明,因为那不是我的问题.
当我希望使用循环调用数组中的函数时,我的真正问题就变成了:
for (int i = 0; i < 6; i++) {
all[i].beingShot(randomNum, randomNum, AK47.getAccuracy());
}
Run Code Online (Sandbox Code Playgroud)
涉及T和CT的类都分别具有isShot方法,该方法是公开的.
Eclipse建议将它们作为快速修复.我想知道除了创建我自己的持有beingShot方法的Object类,或者将其添加到Object类之外是否还有其他逻辑选择,尽管我觉得这些选择中的任何一个都会导致更长时间的问题.
谢谢!