OOP笔记4----抽象类、接口、枚举

抽象类

简介

父类可以封装不同子类的共同特征或者共同行为.而有的时候,父类中封装的方法无法具体完成子类中需要的逻辑,因此我们可以将此方法设计成抽象方法,即使用关键字abstract进行修饰。而有抽象方法的类,也必须使用abstract关键字进行修饰,因此我们称之为抽象类

特点

1.由abstract修饰的方法为抽象方法,抽象方法没有方法体,需要使用分号结尾;

2.若类中包含抽象方法,那么该类必须使用关键字abstract声明成抽象类,final不能修饰抽象类;

3.抽象类里,可以没有抽象方法;

4.抽象类里可以提供构造器,但是不能实例化,没有意义;

5.一个类继承了抽象类,那么必须重写里面的所有抽象方法,除非该子类也声明为抽象类。

意义

1.为其子类提供一个公共的父类型

2.封装子类中重复的内容,如成员变量和方法

3. 定义抽象方法,子类虽然有不同的实现逻辑,但该方法的定义却是一致的

接口

有时,需要从几个不相关的类中派生出一个子类,继承他们的所有成员变量和方法,但是java不支持多继承。因此,可以使用接口,来达到多继承的效果

特点

1.使用interface进行定义;

2.可以提供成员变量,默认提供public static final进行修饰;

3.可以提供成员方法,默认使用public abstract进行修饰;

4.接口中不能存在构造器,接口不能实例化,没有任何意义

实现接口

1. 与继承不同,一个类可以实现多个接口。接口间使用逗号分开。

2.使用关键字implements进行实现,必须实现接口中的所有抽象方法

3.若一个类中没有全部实现接口中的抽象方法,那么该类需要使用abstract声明成抽象

接口之间的继承

1.接口之间可以存在继承关系,即一个接口通过关键字extends可以继承另一个接口。

2.子接口继承了父接口中的所有抽象方法

public interface InterfaceA{
    void methodA();
}

interface InterfaceB{
    void methodB();
}

interface InterfaceC extends InterfaceA,InterfaceB{
    void methodC;
}

class classA implements InterfaceC{
    public void methodA(){
    }

    public void methodB(){
    }
    
    public void methodC(){
    }
}

枚举

枚举是一种特殊的引用数据类型,是一个被命名的整型常数的集合,用于声明一组带标识符的常数。

主要用途是:将一组常量,也可以说成是一组离散值组织起来。

自定义类实现枚举

1.类内部创建一组对象,通常使用public static final关键字共同修饰,对外进行暴露;

2.枚举对象名通常全部都会大写,这是常量的命名规范;

3.可以提供属性,属性应使用private final共同修饰;

4.将构造器私有化;

5.属性,可以提供getXXX方法,但是不需要提供setXxx方法,属性应该是只读的。

enum关键字实现枚举

1.使用enum关键字定义一个枚举,默认会继承java.lang.Enum类,而且是一个final类,因此不能再继承其他类;

2.必须在枚举类的第一行声明枚举类对象。有多个枚举对象时,使用逗号隔开,最后一个用分号结尾;

3.可以提供私有的属性;

4.可以提供构造器,必须是私有的,如果构造器有形参,定义对象时必须显式调用构造器;

5.如果使用无参构造器创建枚举对象,则定义对象时,小括号可以省略

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值