Java中抽象类与接口

文章为自己的简单理解,其他细节就不展开了。(懒)

目录

前言

一、抽象类的概述

二、抽象类的特点

三、抽象类的案例

四、final关键字

五、接口的概述

六、接口的特点

七、接口的成员特点

八、代码演示

九、类和接口的关系

总结


前言

抽象类和接口是java中非常重要的知识点


一、抽象类的概述

        当我们在做子类共性功能抽取时,有些方法在父类中并没有具体的体现,这个时候就需要抽象类了!

​    在Java中,一个没有方法体的方法应该定义为抽象方法,而类中如果有抽象方法,该类必须定义为抽象类!

二、抽象类的特点

  • 抽象类和抽象方法必须使用 abstract 关键字修饰

    //抽象类的定义
    public abstract class 类名 {}
    ​
    //抽象方法的定义
    public abstract void eat();
  • 抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类

  • 抽象类不能实例化

  • 抽象类可以有构造方法

  • 抽象类的子类

    要么重写抽象类中的所有抽象方法

    要么是抽象类

三、抽象类的案例

  • 代码实现

    • 动物类

    public abstract class Animal {
        public void drink(){
            System.out.println("喝水");
        }
    ​
        public Animal(){
    ​
        }
    ​
        public abstract void eat();
    }
    • 猫类

    public class Cat extends Animal {
        @Override
        public void eat() {
            System.out.println("猫吃鱼");
        }
    }
    • 狗类

    public class Dog extends Animal {
        @Override
        public void eat() {
            System.out.println("狗吃肉");
        }
    }
    • 测试类

    public static void main(String[] args) {
            Dog d = new Dog();
            d.eat();//狗吃肉
            d.drink();//喝水
    ​
            Cat c = new Cat();
            c.drink();//喝水
            c.eat();//猫吃鱼
    ​
            //Animal a = new Animal();
            //a.eat();
        }

四、final关键字

  • fianl关键字的作用

    • final代表最终的意思,可以修饰成员方法,成员变量,类

  • final修饰类、方法、变量的效果

    • fianl修饰类:该类不能被继承(不能有子类,但是可以有父类)

    • final修饰方法:该方法不能被重写

    • final修饰变量:表明该变量是一个常量,不能再次赋值

      • 变量是基本类型,不能改变的是值

      • 变量是引用类型,不能改变的是地址值,但地址里面的内容是可以改变的

      • 举例

        public static void main(String[] args){
            final Student s = new Student(23);
            s = new Student(24);  // 错误
            s.setAge(24);  // 正确
        }

五、接口的概述

  • 接口就是一种公共的规范标准,只要符合规范标准,大家都可以通用。

  • Java中接口存在的两个意义

    1. 用来定义规范

    2. 用来做功能的拓展

六、接口的特点

  • 接口用关键字interface修饰

    public interface 接口名 {} 
  • 类实现接口用implements表示

    public class 类名 implements 接口名 {}
  • 接口不能实例化

    我们可以创建接口的实现类对象使用

  • 接口的子类

    要么重写接口中的所有抽象方法

    要么子类也是抽象类

七、接口的成员特点

成员特点

  • 成员变量

    只能是常量 ​ 默认修饰符:public static final

  • 构造方法

    没有,因为接口主要是扩展功能的,而没有具体存在

  • 成员方法

    抽象方法

    默认修饰符:public abstract

       默认方法(default)

       静态方法(static)

       私有方法(private)

八、代码演示

public interface Inter {
    public static final int NUM = 10;
​
    public abstract void show();
}
class InterImpl implements Inter{
​
    public void method(){
        // NUM = 20;
        System.out.println(NUM);
    }
​
    public void show(){
​
    }
}
public class TestInterface {
    
    public static void main(String[] args) {
        System.out.println(Inter.NUM);//10
    }
  
}
  • 接口

  • 实现类

  • 测试类

九、类和接口的关系

  • 类与类的关系

    继承关系,只能单继承,但是可以多层继承

  • 类与接口的关系

    实现关系,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口

  • 接口与接口的关系

    继承关系,可以单继承,也可以多继承


总结

抽象类和接口普遍存在于java中,许多东西都离不开他俩

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值