关于抽象类

/**

  • 抽象类
  • abstract:关键字,用于修饰方法和修饰类
  • 抽象方法:不同类的方法是相似的,但是具体实现的内容不一样;
  • 所以我们只能抽取它的声明,没有具体的方法体
  • 抽象类:有抽象方法的类就是抽象类
  • 一个类继承了抽象类,需要重写抽象类中的方法:
  • @author Administrator

抽象类的特点:
* 1、抽象方法只能放在抽象类中
* 2、抽象类和抽象方法都是被abstract修饰的
* 3、抽象类不能创建对象(不能被实例化)
* 4、抽象类中可以有非抽象方法的
* 5、抽象类和类的关系是继承关系
* 6、一个类如果继承了抽象类,要么重写所有的方法;要么就它本身设置类抽象类
*/

package cn.tedu.day06;

public class AbstractDemo {
	public static void main(String[] args) {
		
	}
}

//抽象类
abstract class Animals{
	public abstract void eat();
	public void sleep(){
		
	}
	
}
class Dog extends Animals{

	@Override
	public void eat() {
		System.out.println("狗吃骨头。");
		
	}
	
}
class Cat extends Animals{
	@Override
	public void eat() {
		System.out.println("猫吃老鼠");
		
	}
}

其中main 里面的东西自己添加哦!

### C# 中抽象类的概念、特点及使用场景 #### 抽象类的定义 抽象类是一种不能直接实例化的类,其目的是为派生类提供统一的接口和部分实现。通过 `abstract` 关键字修饰的类即为抽象类,其中可以包含抽象方法(没有具体实现的方法)以及非抽象方法(提供了默认实现的方法)。抽象方法必须由派生类实现,而非抽象方法则可以被继承或重写[^2]。 #### 抽象类特点 1. **不能实例化**:抽象类不能直接创建对象,只能通过派生类来实例化。 2. **包含抽象成员**:抽象类中可以包含抽象方法、属性或事件,这些成员没有具体的实现,必须由派生类提供具体实现。 3. **支持部分实现**:抽象类不仅可以声明抽象成员,还可以包含已实现的方法、字段、构造函数等。 4. **隐藏实现细节**:抽象类可以通过封装具体的实现逻辑,仅暴露必要的接口给外部使用。 5. **提供默认行为**:抽象类可以为派生类提供默认的行为实现,派生类可以选择性地重写这些行为。 #### 抽象类的使用场景 抽象类适用于以下场景: - 当需要为一组相关类定义通用接口时,可以使用抽象类来提供统一的接口和部分实现[^2]。 - 当希望隐藏实现细节并只暴露必要接口时,抽象类是一个合适的选择。 - 当需要在不同的实现类中共享一些常量或方法时,可以使用抽象类而不是接口[^1]。 #### 示例代码 以下是一个简单的抽象类示例,展示了抽象类的基本用法: ```csharp using System; namespace AbstractClassExample { // 定义抽象类 public abstract class Animal { // 抽象方法 public abstract void MakeSound(); // 非抽象方法 public void Sleep() { Console.WriteLine("Zzz..."); } } // 派生类 public class Dog : Animal { // 实现抽象方法 public override void MakeSound() { Console.WriteLine("Woof! Woof!"); } } // 派生类 public class Cat : Animal { // 实现抽象方法 public override void MakeSound() { Console.WriteLine("Meow! Meow!"); } } class Program { static void Main(string[] args) { Animal dog = new Dog(); dog.MakeSound(); // 输出: Woof! Woof! dog.Sleep(); // 输出: Zzz... Animal cat = new Cat(); cat.MakeSound(); // 输出: Meow! Meow! cat.Sleep(); // 输出: Zzz... } } } ``` #### 抽象类与接口的区别 - **成员限制**:接口只能声明方法或属性的原型,而不能包含常量或其他声明[^1]。抽象类则可以包含字段、常量、构造函数等。 - **实现方式**:接口的所有成员都必须由实现类提供具体实现,而抽象类可以包含已实现的方法。 - **继承限制**:C# 中一个类只能继承一个抽象类,但可以实现多个接口。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值