你把实现类看成是小学教师,或是中学教师。没羡
无枯虚拍论是小学教师还是中学教师,他们都是教师,都‘继承’了教师。
你对外誉乎封装时用接口,就好比是让你选择行业,你只能选择教师,而一般不会在诸多行业中还列举出小学,中学等等。
而实现类也表现出了多态性,因为原本的只有教师这一个职业,然后因为教授学生的不同,就出现了小学教师,中学教师等等。
不知道这个例子是否恰当~~
public class Demo {public static void main(String[] args) {
DemoImpl demoImpl = new DemoImpl()
demoImpl.f(1)
demoImpl.g(2, 3)
demoImpl.h(4)
}
}
interface DemoInterface {
public abstract void f(int x)
public abstract void g(int x, int y)
public abstract double h(double x)
}
class DemoImpl implements DemoInterface {
@Override
public void f(int x) {
System.out.println("method f in DemoImpl, args: x=" + x)
}
@Override
public void g(int x, int y) {
System.out.println("蚂搏method g in DemoImpl, args: "运物樱 + "x="旁丛 + x + ", y=" + y)
}
@Override
public double h(double x) {
System.out.println("method h in DemoImpl, args: x=" + x)
return 0
}
}
具体实现是在类实现接口的时候由类来实现的,接口中只是包含方法的定义,在类中要把需要则袭实现的接口的所有方法都实现。如:
interface IMyInterface
{
void func()//在接口中只是声明,没有实现,也就是没有代码
}
在类中要有这丛含样的方法:
void func()
{
//DoSomething 这个就是具体实现
}
抽象类就是用来做基类的,渗盯笑他的派生类实现抽象类的方法,这个和接口类似,但是抽象类只能单继承,而接口可以多继承。
接口只是声明的东西,实际并不分配内存,当在类中实现了接口定义的方法后才真正编译,占用内存。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)