我发现他们有同样的限制。
interface IPerson {
name: string;
talk(): void;
}
interface IVIP {
code: number;
}
abstract class Person {
abstract name: string;
abstract talk(): void;
}
class ManagerType1 extends Person {
// The error I get is that I need to implement the talk() method
// and name property from its base class.
}
class ManagerType2 implements IPerson {
// The error I get is that I need to implement the talk() method
// and the name property from the interface.
}
class ManagerType3 implements IPerson, IVIP {
// Now the error I get is that I need to implement all the
// properties and methods of the implemented interfaces to the derive class
}
正如我所发现的,这两者之间没有明显的区别,因为它们都实施了相同的限制。我唯一注意到的是继承和实现。
class ManagerType3 extends Person implements IPerson, IVIP {
// Now the restriction is you need to implement all the abstract
// properties and methods in the based class and all
// the properties and methods from the interfaces
}
接口
是定义属性和实现它的对象可以做什么的契约。例如,您可以定义管道工和电工可以做什么:
interface Electrician {
layWires(): void
}
interface Plumber {
layPipes(): void
}
然后,您可以使用接口的服务:
function restoreHouse(e: Electrician, p: Plumber) {
e.layWires()
p.layPipes()
}
请注意,实现接口的方式是免费的。您可以通过实例化一个类或使用一个简单的对象来实现:
let iAmAnElectrician = {
layWires: () => { console.log("Work with wires…") }
}
abstract class HouseRestorer {
protected abstract layWires(): void
protected abstract layPipes(): void
restoreHouse() {
this.layWires()
this.layPipes()
}
}
这个抽象类HouserEstoreR
定义如何使用Laywires
和Laypipes
方法,但是在使用它之前,由子类来实现专门的处理。
抽象类是一种传统的OOP方法,在JavaScript中并不传统。
这两种方法都允许做相同的事情。但它们是解决问题的两种不同方法。
(1)接口 接口使用interface修饰; 接口不能实例化; 类可以实现多个接口; ①java8之前,接口中的方法都是抽象方法,省略了public abstract。②java8之后;接口中可以定义静态方法,静态方法必须有方法体,普通方法没有方法体,需要被实现; (2)抽象类 抽象类使用abstract修饰; 抽象类不能被实例化; 抽象类只能单继承; 抽象类中可以包含抽象方法和非抽象方法,非抽象
问题内容: 我不清楚两者之间的区别。 谢谢 问题答案: 它们非常相似,但是存在一些重要的技术差异: 抽象类允许您为某些方法提供默认的实现,但是接口不允许您提供任何实现。 您可以实现多个接口,但只能从一个抽象类继承。 这些差异影响应使用两种技术的方式: 您应该使用接口来 定义合同 。 抽象类对于 重用代码 很有 用 ……但是请注意,它不是重用代码的唯一方法。您还应该考虑其他方法,例如遏制。
据我所知,唯一剩下的区别(除了一些潜在的效率问题之外)是抽象类遵循传统的Java单继承,而接口可以有多继承(或者多实现,如果你愿意的话)。这又引出了另一个问题-- 新的Java8接口如何避免菱形问题?
本文向大家介绍接口和抽象类的区别是什么?相关面试题,主要包含被问及接口和抽象类的区别是什么?时的应答技巧和注意事项,需要的朋友参考一下 考察点:抽象类 Java提供和支持创建抽象类和接口。它们的实现有共同点,不同点在于: 接口中所有的方法隐含的都是抽象的。而抽象类则可以同时包含抽象和非抽象的方法。 类可以实现很多个接口,但是只能继承一个抽象类 类可以不实现抽象类和接口声明的所有方法,当然,在这种情
本文向大家介绍抽象类和接口的区别是什么?相关面试题,主要包含被问及抽象类和接口的区别是什么?时的应答技巧和注意事项,需要的朋友参考一下 实现:抽象类的子类使用 extends 来继承;接口必须使用 implements 来实现接口。 构造函数:抽象类可以有构造函数;接口不能有。 实现数量:类可以实现很多个接口;但只能继承一个抽象类【java只支持单继承】。 访问修饰符:接口中的方法默认使用 pub
在TypeScript中,当创建.d.ts源代码声明文件时,哪个更可取,为什么? 或 我能说出的区别是接口不能有静态方法,所以你必须为此使用一个类。两者都不产生任何JS输出,所以也许没关系?