一、class
java
1、抽象类中可以有抽象的方法,不需要实现
2、抽象类中也可以有非抽象的方法,需要具体实现
3、抽象类中可以有常量及变量
4、抽象类之间可以相互继承
5、抽象类的成员可以被private、public、protected所修饰
6、抽象中可以有静态方法
7、抽象类可以实现interface,即可以重写interface中的方法,也可以不实现,由抽象类的子类去实现
8、抽象类和interface一样,不可以实例化
//interface A
public interface A {
default int hello(){
return 1;
}
void detail();
}
//抽象类B,没有实现A中的detail()方法
public abstract class B implements A{
static final String name = "test";
int age;
protected int id;
private String addr;
void get(){
System.out.println("get");
}
abstract void set();
static void say(){
System.out.println("hello world");
}
}
//实现类C 实现了A中的detail方法,也实现了B中的set方法
public class C extends B{
@Override
public void detail() {
}
@Override
void set() {
}
}
二、typescript
大体上和java一样,稍有不同
1、抽象类实现interface,需要实现interface中的方法,而抽象类的子类不需要重写
2、抽象类可以使用intanceof,interface不行
3、class的用法也大致相同
interface A{
say(): void;
hello(): void;
}
abstract class B implements A{
say(): void { //抽象类实现接口,需要实现其中的方法
}
hello(): void {
}
protected name: string;
public abstract get(): void;
set(): void{
console.log("set")
}
private age: number
male: 'man'
static main(): void {
console.log("main")
}
}
class C extends B{
get(): void { //子类只用实现抽象类中的抽象方法
}
}
console.log(B.main())
console.log(new C() instanceof B)