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

p493 抽象类

java基础语法-day20进阶-抽象类和接口_第1张图片
java基础语法-day20进阶-抽象类和接口_第2张图片

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

final修饰的类无法被继承,但是抽象类存在的意义就是被继承(抽象类无法实例化对象),所以抽象类前面不能加abstract。java基础语法-day20进阶-抽象类和接口_第3张图片
java基础语法-day20进阶-抽象类和接口_第4张图片
java基础语法-day20进阶-抽象类和接口_第5张图片

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

java基础语法-day20进阶-抽象类和接口_第6张图片

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

p496 回顾final关键字和抽象类

java基础语法-day20进阶-抽象类和接口_第7张图片

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

注意方法重载和方法重写的区别
java基础语法-day20进阶-抽象类和接口_第8张图片
java基础语法-day20进阶-抽象类和接口_第9张图片
java基础语法-day20进阶-抽象类和接口_第10张图片

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 总结抽象类

java基础语法-day20进阶-抽象类和接口_第11张图片

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

p499 接口的基础语法

java基础语法-day20进阶-抽象类和接口_第12张图片

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 回顾昨天内容

java基础语法-day20进阶-抽象类和接口_第13张图片
java基础语法-day20进阶-抽象类和接口_第14张图片
java基础语法-day20进阶-抽象类和接口_第15张图片

你可能感兴趣的:(java,java,面试,单元测试)