JavaOOP 04 抽象类和接口

四、抽象类和接口

4.1 抽象类

4.1.1 抽象类和抽象方法

使用上 abstract 关键字修饰的类 或 方法

抽象类

  • 抽象类就是抽象的类,抽象往往是相对于具体而言的。

  • 例如猫是具体的对象,则动物就是抽象概念

  • 抽象方法所在的类,必须是抽象类才行,在class之前写上abstract即可

  • 抽象类无法创建对象,抽象出的概念,不存在具体实例

  • 语法 : <访问修饰符> abstract calss 类名{}

抽象方法

  • 当一个类的方法被abstract 关键字修饰的时候,这个方法被称为抽象方法
  • 被抽象的方法,不会具体实现,也就是不需要写方法体,同时也不需要大括号
  • 被抽象的方法,抽象类的子类必须重写该方法,除非子类也是抽象类
  • 语法 <访问修饰符> abstract < 返回值 > < 方法名 >([参数列表])

抽象方法与普通方法的区别

  • 普通方法有方法体,而抽象方法没有

  • 示例

    public abstract class Test01 {
        //普通方法
        public void print(){
            //方法体
            System.out.println("hello");
        }
        //抽象方法
        public abstract void println();
    }
    
    

抽象类的优势

  • 提高可重用性
  • 代码松耦合,更易于维护
  • 方便实现多态

有抽象方法的类必然是抽象类,但抽象类当中的方法不一定全是抽象方法

abstract只能修饰类或方法,不能修饰属性和构造方法

4.1.2 final修饰符

​ final除了可以修饰变量,还可以用来修饰类和方法

1. final修饰类

  • 用final修饰的类不能再被继承
  • **语法 : <访问修饰符> final Class 类名 **

2. final修饰类的方法

  • 用final修饰的方法不能再被重写
  • 语法 : <访问修饰符> final <返回值类型> 方法名 ([参数列表]) {}

4.2 接口

4.2.1 为什么需要接口

1. java中一个类不允许有多重继承,但是可以继承n个接口

2. 我们希望在一个类中能够同时兼容多个不同类型的特征,则需要使用接口

4.2.2 接口的概念和定义

1. 接口是一个全部由抽象方法组成的集合,接口内定义的方法全部为抽象方法

2. 接口需要用interface定义

3. 接口内只能有抽象方法和常量

4. 接口没有构造方法

5. 定义接口

  • 定义接口类型

​ 语法 :[访问修饰符] interface 接口名(){

​ //接口成员

​ }

  • 类实现接口

    语法 : class 类名 implements 接口名{

    ​ //类成员

    ​ }

  • 示例

    notebook 接口

    public interface notebook {
        public void play();
    }
    
    

    Student 类

    //实现接口
    public class Student implements notebook{
    
        @Override
        public void play() {
            System.out.println("学生在使用电脑");
        }
    }
    
    

4.2.3 定义复杂的接口

1. 接口直接可以通过用extends 关键字实现继承关系

  • 一个接口可以继承多个接口
  • 接口不可以继承类
  • 语法 [访问修饰符] interface 接口名 extends 父接口1,父接口2 …{}

2. 一个普通类只能继承一个类,但能同时实现多个接口

  • 接口同时继承一个父类并实现多个接口

  • 语法 : calss 类名 extends 父类名 implements 接口1,接口2

3. 示例

  • 接口继承接口

    • 父类接口1

      public interface FatherInterface1 {
           void one();
      }
      
      
    • 父类接口2

      public interface FatherInterface2 {
           void two();
      }
      
      
    • 子类接口

      public interface Subclass extends FatherInterface1,FatherInterface2{
          @Override
          void one();
      
          @Override
          void two();
      }
      
      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值