java基础语法-day20进阶-抽象类和接口

本文介绍了Java中的抽象类、抽象方法、final关键字的应用,强调了多态在面向抽象编程中的重要性,并对比了接口的定义与实现,包括常量和抽象方法。通过实例演示了如何继承抽象类和实现接口,以及它们在代码中的实际应用。
摘要由CSDN通过智能技术生成

p493 抽象类

在这里插入图片描述
在这里插入图片描述

p494 抽象类无法创建对象但有构造方法

final修饰的类无法被继承,但是抽象类存在的意义就是被继承(抽象类无法实例化对象),所以抽象类前面不能加abstract。
在这里插入图片描述
在这里插入图片描述

p495 抽象类基础语法以及抽象方法

在这里插入图片描述

//这就是一个抽象方法
 public abstract void doSome();

p496 回顾final关键字和抽象类

在这里插入图片描述

p497 非抽象类继承抽象类必须将抽象方法实现

注意方法重载和方法重写的区别
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

public class abstractTest02 {
    public static void main(String[] args) {
        Bird b = new Bird();
        b.move();

        //使用多态
        //这就是面向抽象编程。
        //以后就是a.xxxx调用
        //a的类型是抽象的,Animal是抽象的
        //面向抽象编程,不要面向具体编程,降低程序的耦合度,提高程序的扩展力
        Animal a = new Bird();//向上转型
        //注意分析:
            //编译的时候,下面的move()是谁的:
                //Animal的
            //编译的时候,下面的move()是谁的:
                //Bird
        //编父运子
        a.move();

        //多态
        Animal x = new Cat();
        x.move();


    }
}
//抽象类
abstract class Animal{
    //抽象方法
    public abstract void move();
}
//非抽象类继承抽象类
class Bird extends Animal{
    //重写抽象类。需要将从父类中继承过来的抽象方法进行覆盖(重写)
    public void move(){
        System.out.println("鸟儿在飞翔");
    }
}
class Cat extends Animal{
    //重写抽象类。需要将从父类中继承过来的抽象方法进行覆盖(重写)
    public void move(){
        System.out.println("猫在走猫步");
    }
}


p498 总结抽象类

在这里插入图片描述

以后写代码的时候能用多态就用多态。

p499 接口的基础语法

在这里插入图片描述

p500-p502 接口的基础语法

public class abstractTest03 {
    public static void main(String[] args) {
        //访问接口中的常量
        System.out.println(MyMath.PI);
        //接口中的常量不能修改,报错
        //MyMath.PI = 2.5;
    }
}

/**
 * 1、接口也是一种抽象数据类型
 * 2、接口中的方法是完全抽象的
 * 3、【修饰符列表】 interface 接口名{}
 * 4、接口支持多继承
 * 5、接口中只包含常量+抽象方法
 * 6、接口中所有元素都是public修饰的(都是公开的)
 * 7、接口中的抽象方法的public abstract可以省略
 * 8、接口中的常量的public abstract可以省略
 * 9、接口中的方法不能有方法体
 */
//定义接口
interface A{

}
//接口支持继承
interface B extends A{

}
//一个接口可以继承多个接口(支持多继承)
interface C extends A,B{

}
//我的数学接口

interface  MyMath{

    //常量,前面的修饰符类列表也可以省略
    //public static final double PI = 3.1415926;
    double PI = 3.1415926;

    //抽象方法
    //public abstract int sum(int a,int b);
    //接口中既然都是抽象方法,那么public abstract可以省略
    //加法的抽象方法
    int sum(int a ,int b);
    //减法的抽象方法
    int sub(int a ,int b);
    //接口中的方法不能有方法体
    //void doSome(){

    //}
}

p503 回顾昨天内容

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值