class and interface

本文介绍了面向对象编程中类和接口的基本继承特性。类遵循单继承原则,而接口支持多继承。文章还强调了在定义类时必须先进行继承再实现接口的规则。

1

class extends superclass implements interface1, interface2

2

interface extends interface1, interface2

类是单继承,接口是多继承

类必须是先继承后实现接口, 顺序不能颠倒

在不同的编程语言中,class(类)和interface(接口)存在诸多区别,以下以Java、C#和TypeScript为例进行说明: ### Java - **实现与继承**:interface需要用implements实现,而class(这里指abstract class)需要用extends继承;一个类可以实现多个interface,但只能继承一个abstract class [^2]。 - **设计理念**:interface强调特定功能的实现,而abstract class强调所属关系 [^2]。 - **方法实现形式**:interface中的每一个方法都是抽象方法,只有声明没有方法体,实现类必须实现;abstract class中并非所有方法都是抽象的,只有冠有abstract的方法才是抽象的,子类必须实现,没有abstract的方法在abstract class中必须定义方法体。abstract class的子类对非抽象方法既可以直接继承,也可以覆盖;对抽象方法,可以选择实现,也可以再次声明为抽象方法留给其子类实现,但此类必须声明为抽象类 [^2]。 - **成员特点**:interface只能声明public的方法,不能声明private及protected的方法,不能定义方法体,不能声明实例变量,但可以声明常量变量;abstract class可以定义自己的实例变量,供子类继承使用,还可以定义缺省的方法体,供子类直接使用或覆盖 [^2]。 ### C# - **概念本质**:类是对象的具体实现,接口是对类的行为的抽象。接口用于定义标准,类实现接口来遵守标准 [^4]。 - **实例化**:接口不能实例化,必须通过类实例化;类可以实例化(非抽象类) [^4]。 ### TypeScript - **用途**:interface主要用于类型检查,确保对象满足特定的结构。接口不能实例化,只能被实现(implements)或扩展(extends) [^5]。 ### 代码示例 #### Java ```java // 接口 interface MyInterface { void method(); // 抽象方法 } // 抽象类 abstract class MyAbstractClass { abstract void abstractMethod(); void normalMethod() { System.out.println("This is a normal method."); } } // 实现类 class MyClass extends MyAbstractClass implements MyInterface { @Override public void method() { System.out.println("Implementing interface method."); } @Override void abstractMethod() { System.out.println("Implementing abstract method."); } } ``` #### C# ```csharp // 接口 public interface IShape { void Draw(); } // 类 public class Circle : IShape { public void Draw() { Console.WriteLine("画一个圆形"); } public double Radius { get; set; } public Circle(double r) { Radius = r; } } ``` #### TypeScript ```typescript // 接口 interface Person { name: string; age: number; greet(): void; } // 类 class MyPerson implements Person { name: string; age: number; constructor(name: string, age: number) { this.name = name; this.age = age; } greet() { console.log(`Hello, my name is ${this.name} and I'm ${this.age} years old.`); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值