JAVA入坟12 抽象类和接口

JAVA入坟12 抽象类和接口

居然连着更新两天 我不是我了

抽象类

理解:“用进废退”:多态的领域, 父类中被子类重写的实例方法,功能逐渐淡化,索性去掉方法体 退化为抽象方法

抽象方法使用规则
1.没有方法体的方法,就是抽象方法。
2.abstract修饰符修饰
3.抽象方法只是用来定义规范的。告诉子类应该做什么,具体怎么做,不同的子类有不同的实现
4.不能私有、静态、final

抽象类使用规则
1.被abstract修饰的类是抽象类
2.抽象类中可以有抽象方法,也就是被abstract修饰的方法,也可以没有。
3.抽象方法没有方法体,只有方法声明。
4.子类继承抽象类需要重写父类所有的抽象方法,否则,子类也必须声明为抽象类

5.抽象类有构造方法,但是不能被显示调用,也就是不能实例化,或者说抽象类没有对象。–防止直接调用抽象方法

6.抽象类的构造方法只在子类实例化时隐式调用。
7.抽象类的使用一般是作为引用类型,指向非抽象的引用实例,体现出多态。
8.构造方法和静态方法都不能(abstract)抽象修饰
静态方法不能被子类覆盖(重写),一旦声明为抽象方法 将永远没有具体的实现

案例:

抽象类门有两个抽象方法,关和开;接口锁也有两个抽象方,锁门(lockUp)和开锁(openLock);防盗门类TheftproofDoor,继承门,实现锁接口的抽象方法(共4个)。编写测试类,调用防盗门重写的四个抽象方法。

public interface Suo {
    void lockUp();
    void openLock();
}

public abstract class Door {
    public abstract void open();
    public abstract void close();
}
public class TheftproofDoor extends Door implements Suo{
    @Override
    public void open() {
        System.out.println("用力推,门打开了。");
    }

    @Override
    public void close() {
        System.out.println("拉门,门关上了。");
    }

    @Override
    public void lockUp() {
        System.out.println("插进钥匙,向左转三圈,锁上,拔出钥匙");
    }

    @Override
    public void openLock() {
        System.out.println("插进钥匙,向右转三圈,开锁,拔出钥匙");
    }
}
public class testDoor {
    public static void main(String[] args) {
        Suo suo = new TheftproofDoor();
        Door d = new TheftproofDoor();
        d.close();
        suo.lockUp();
        suo.openLock();
        d.open();
    }
}

在这里插入图片描述

接口

接口可以理解为定义的一组通用的组件,或者是对外提供服务的功能模块。接口比抽象类更抽象,已经完全抽象得没边没影。
接口通常作为实体类的成员属性,和类是附属关系,而不是包含关系。

1.接口的语法规则
1.定义一个接口:
public interface 接口名{
}
和定义类的区别在于,将class关键字换成了interface
2.接口中也有成员属性和方法
成员属性: public static final (公共的静态常量)类型
成员方法:public abstract (公共的抽象方法) 或静态方法

案例也在上面 我懒 嗷 还有 点个赞!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值