抽象类与接口

本文详细介绍了抽象类和接口在面向对象编程中的概念和应用。抽象类用于提取共同特征,不能实例化,主要用于被子类继承;抽象方法是没有实现的方法。接口则是完全抽象的,支持多继承,只能包含常量和抽象方法,用于类的实现。多态性是面向抽象编程的核心,允许父类型引用指向子类型对象,提高程序的扩展性和灵活性。遵循开放封闭原则(OCP),使用多态和接口能有效降低耦合度。

类到对象是实例化,对象到类是抽象。

抽象类(例子):

在这里插入图片描述

1、什么是抽象类
类和类之间具有共同特征,将这些共同特征提取出来,形成的就是抽象类。类本身是不存在的,所以抽象类无法创建对象《无法实例化》。
2、抽象类属于什么类型?
抽象类也属于引用数据类型。
3、抽象类怎么定义?
语法:

[修饰符列表]abstract class类名{类体;
}

4、抽象类是无法实例化的,无法创建对象的,所以抽象类是用来被子类继承的。

5、final和abstract不能联合使用,这两个关键字是对立的。

6、抽象类的子类可以是抽象类。

7、抽象类虽然无法实例化,但是抽象类有构造方法,这个构造方法是供子类使用的。

什么是抽象方法呢?
抽象方法表示没有实现的方法,没有方法体的方法。
例如: public abstract void dosome () ;
抽象方法特点是:
特点1:没有方法体,以分号结尾。
特点2:前面修饰符列表中有abstract关键字。

9、抽象类中不一定有抽象方法,但抽象方法一定在抽象类中

10、一个非抽象的类,继承抽象类,必须将抽象类中的抽象方法进行覆盖/重写/实现。

抽象类型能不能使用多态?
多态:父类型引用指向子类型对象。

Animal a = new Bird() ; //向上转型。(父:animal,子:bird)
//这就是面向抽象编程。
//以后你都是调用的a.xXXX
// a的类型是Animal, Animal是抽象的
//面向抽象编程,不要面向具体编程,降低程序的耦合度,提高程序的扩展力。
//这种编程思想符合OCP原则。

0CP (Open-Closed Principle),它的核心含意是:一个好的设计应该能够容纳新的功能需求的增加,但是增加的方式不是通过修改又有的模块(类),而是通过增加新的模块(类)来完成的,也就是在设计的时候,所有软件组成实体包括接口,函数,函数等必须是可扩展但不可修改的。如果一个设计能够遵循OCP,那么就能够有效的避免上述的问题。

编程可多使用多态

接口(特殊化的抽象类)

接口的相关介绍:
1、接口是一种“引用数据类型”。
2、接口是完全抽象的。
3、接口怎么定义:[修饰符列表] interface接口名{}
4、接口支持多继承。
5、接口中只有常量+抽象方法。
6、接口中所有的元素都是public修饰的
7、接口中抽象方法的pubiic abstract可以省略。
8、接口中常量的public static final可以省略。
9、接口中方法不能有方法体。
10、一个非抽象的类,实现接口的时候,必须将接口中所有方法加以实现。
11、一个类可以实现多个接口。
12、extends和implements可以共存,extends在前,implements在后。
13、使用接口,写代码的时候,可以使用多态(父类型引用指向子类型对象)。

接口的基础语法:
1、类和类之间叫做继承,类和接口之间叫做实现
2、继承使用extends关键字完成。
实现使用implements关键字完成。
2、五颗星(*):当一个非抽象的类实现接口的话,必须将接口中所有的抽象方法全部实现(覆盖、重写)。


示例代码:

public class Test01{
public static void main (string [] args){
}
}
//定义接口
interface A{
}
//接口支持继承
interface B{
}

//一个接口可以继承多个接口(支持多继承)
interface c extends A,B{}


//我的数学接口
interface MyMath{
 //常量
//public static final double PI = 3.1415926;

//public static final可以省略吗?  可以
double PI = 3.1415926;

//抽象方法
//public abstract int sum (int a, int b) ;
//接口当中既然都是抽象方法,那么在编写代码的时候,public abstract可以省略吗?可以
int sum (int a, int b) ;
//接口中的方法可以有方法体吗?
//错误:接口抽象方法不能带有主体
void dosome () {
}

类型和类型之间的关系:

is a (继承)、 has a(关联)、like a(实现)

is a:

Cat is a Animal (猫是一个动物)
凡是能够满足is a的表示"继承关系"

A extends B

has a:

i has a Pen(我有一支笔)
凡是能够满足has a关系的表示"关联关系"
关联关系通常以"属性"的形式存在。

A{
B b;
}

like a :

Cooker like a FoodMenu(厨师像一个菜单一样)
凡是能够满足like a关系的表示" 实现关系"
实现关系通常是:类实现接口。

A implements B
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值