抽象类和抽象方法、接口

一、抽象类和抽象方法

  1. 抽象方法:由abstract关键字修饰的方法,并且没有方法体即没有大括号

  2. 抽象类:含有抽象方法或者由abstract关键字修饰的类

    1. 抽象类里可以由成员变量成员方法以及构造方法
    2. 抽象类里面可以有抽象方法也可以没有
    3. 抽象类没有实例化的对象,但一定有构造方法,抽象类存在的意义在于多态在于被继承,继承抽象的子类必须重写父类的所有抽象方法,不然的话要把子类也声明为抽象方法,因此抽象类对子类具有强制性和规范性
    package com.sw.cs4;
    
    public abstract class Animal {//抽象类
        private int id;//当成员变量被final关键字修饰的时候即使是
        //引用类型也必须显示的的给它赋值且只能赋值一次,
        //可以直接赋值也可在构造方法中赋值,此时系统已经不会给默认值了
        public Animal(){}
        public Animal(int id) {
            this.id = id;
        }
        public abstract void eat();//抽象方法
        public abstract void move();
    }
    
    class Dog extends Animal {
        public void eat() {
            System.out.println("eat!");//子类重写了eat方法但是没有重写move方法
        }
    }
    //如果子类没有重写父类所有的抽象方法就会报错
    //java: com.sw.cs4.Dog不是抽象的, 并且未覆盖com.sw.cs4.Animal中的抽象方法move()
    

二、接口

  1. 接口的定义与类相似,接口比抽象类更加抽象,它是抽象方法的集合,它的里面可以有:字段、静态方法、default关键字修饰的方法以及抽象方法,静态方法和default修饰的方法要有方法体;

  2. 实现接口的类必须重写接口中的所有抽象方法,它是高内聚、多实现、多继承的。

    package com.sw.cs4;
    
    public interface AnimalIterface {
        public int id = 0;
        public static void eat() {
            System.out.println("eat!");
        }
        default void move() {
            System.out.println("move!");
        }
        void jiao();//接口里面不用特意的写public abstract来修
        //饰方法,没有其他修饰符修饰的话它默认就是抽象方法
        void xiao();
    }
    
    class Dog implements AnimalIterface{
        public void jiao() {//重写了jiao方法
            System.out.println("Dog 正在叫");
        }
        public void xiao() {//重写了xiao方法
            System.out.println("Dog 正在笑");
        }
    }
    
    class Test {
        public static void main(String[] args) {
            AnimalIterface d = new Dog();
            d.jiao();
            d.xiao();
            d.move();//可以直接调用default修饰的方法
            AnimalIterface.eat();//直接 接口名.方法名 调用静态方法
        }
    }
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值