继承类,接口

博客介绍了继承类和接口的相关知识。继承类中抽象方法定义在抽象类,抽象类不能直接创建对象,私有方法子类无法继承;接口是功能集合,只能有抽象方法,可定义用特定修饰符修饰的变量。还说明了类与接口的关系及继承和接口的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

继承类

继承方法定义格式:public abstract 返回值类型 方法名(参数);

 

继承类定义格式:public abstract class 类名 {}

抽象方法一定定义在抽象类中,抽象类不能直接创建对象,私有的方法子类是没法继承的。

public interface Smoking {
    //成员变量的特点:public static final 数据类型 变量名=变量值;
    //静态常量
    public static final int a=1;
    //抽象方法:public abstract 返回值类型 方法名(参数列表)
    //所有的抽象方法不管写不写,都默认是public abstract修饰
    public abstract void smoke();
}

 

public class Demo {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Student s=new Student();
        s.smoke();
        //静态常量可以通过类名.变量名调用
        System.out.println(Smoking.a);
    }

}

 

 接口

接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”。 

定义格式:public interface 接口名 {

      抽象方法1;

      抽象方法2;

      抽象方法3;

      }

 接口中只能是抽象方法,不能有普通方法,不能定义普通成员变量

类与接口的关系:实现接口,用implements.

格式:class implements 接口 {

        重写接口中方法

      } 

接口中可以定义变量,必须用public static final 修饰

多个接口之间可以继承。

继承和接口的区别:

继承类中可以写普通方法,接口只能是抽象方法。

继承只能继承一个直接父类,接口可以多实现。

 

转载于:https://www.cnblogs.com/boss-H/p/10901663.html

### C# 中抽象继承接口的语法与用法 在 C# 中,抽象可以通过 `:` 符号来继承接口。这种继承允许抽象不仅提供部分实现,还可以满足接口所定义的行为契约。以下是关于抽象继承接口的具体说明: #### 抽象继承接口的基础概念 抽象可以继承一个或多个接口,并可以选择性地实现这些接口的部分功能[^1]。未被完全实现的方法会被标记为抽象方法,留给子去具体实现。 #### 语法示例 下面是一个简单的例子展示如何让抽象继承并实现接口: ```csharp // 定义一个接口 IAnimal public interface IAnimal { void Speak(); } // 定义另一个接口 IFlyable public interface IFlyable { void Fly(); } // 创建一个抽象 Bird,它实现了 IAnimal 并继承了 IFlyable public abstract class Bird : IAnimal, IFlyable { public virtual void Eat() { Console.WriteLine("The bird is eating."); } // 实现来自 IAnimal 的 Speak 方法 public void Speak() { Console.WriteLine("Bird makes a sound."); } // 声明一个抽象方法,该方法必须由派生实现 public abstract void Fly(); } ``` 在这个例子中,`Bird` 是一个抽象,它既实现了 `IAnimal` 接口中定义的 `Speak()` 方法,又声明了一个抽象方法 `Fly()` 来强制其派生完成具体的飞行逻辑[^2]。 #### 复杂场景下的应用 当存在更复杂的继承关系时,比如接口本身也继承自其他接口或者有多个接口需要合并到一起的时候,可以按照如下方式操作: ```csharp // 定义基础接口 IMoveable public interface IMoveable { void Move(); } // 新建接口 IFastMoveable 继承自 IMoveable public interface IFastMoveable : IMoveable { int Speed { get; set; } } // 抽象 FastRunner 同时继承两个接口 public abstract class FastRunner : IMoveable, IFastMoveable { public int Speed { get; set; } public void Move() { Console.WriteLine($"Moving at speed of {Speed} km/h"); } // 可以添加更多抽象成员供子覆盖 public abstract void RunFast(); } ``` 这里展示了如何创建一个新的接口 `IFastMoveable` ,它是基于已有接口扩展而来的;接着再构建一个抽象 `FastRunner` 集成了这两个接口的功能[^3]。 #### 注意事项 - 如果某个抽象继承了一些接口但并未全部实现它们,则那些未实现的方法应当标注为抽象。 - 当一个最终实例化此时(即不是抽象),则需确保已经提供了所有必需方法的实际版本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值