2021-08-18面向对象的第三个基本特征,多态

多态(重点)

在生活中我们说:
   水  在不同的温度下 有不同的状态和形态
   汽车: 跑车 卡车 小轿车  渣土车 油罐车 叉车.....
   汽车 = 跑车
   汽车 = 卡丁车
在java中怎么去体现多态呢?
   a. 必须有继承关系
   b. 父类的引用指向子类的实例化对象。
   c. 多态的使用前提是 必须有方法的重写。
      所以在多态中,父类引用调用方法的时候调用的是子类重写以后的方法。
   d.多态只能调用父类或者子类重写父类的方法 ,不能调用子类特有的方法,

抽象:abstract 抽象

为什么我们要用abstract抽象

为了简化代码的书写

抽象方法

  1. abstract修饰的方法,此方法只能存在于被abstract修饰的类中

抽象类

  1. abstract修饰的类

  2. 因为这是一个类,所以它存在,属性,方法,构造器。并且它还可能存在抽象方法

    **注意:**抽象类需要被实现(重写其中的抽象方法)

package com.xdkj.javase.oop06;


/**1. abstract 抽象 
 * 2. 抽象的方法就是只有方法的声明  没有方法体(方法的实现)
 * 3. 有抽象方法的类必须是抽象类
 * 4. 抽象类中不一定有抽象方法 也可以有普通的方法
 * 5. 抽象类中的抽象方法在子类中必须进行重写 普通也可以进行重写
 * 6. 抽象类不能实例化对象
 * 7. 抽象类有构造器 并且是为了子类实例化对象来使用的,自己不能实例化对象
 * 8. 抽象类有属性可以是变量 也可以是常量 
 * 9. 抽象类可以有静态的 成员属性和行为  通过类名调用(通过静态的访问方式访问)
 * */
public abstract class Car {
    //私有的成员属性 变量
    private int age;
    //成员属性 常量
    final int  count = 2000;
    //静态常量
    static final String FACTORY = "华晨";
    
    
    public Car() {
        super();
    }
    
    
    public Car(int age) {
        super();
        this.age = age;
    }


    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public abstract void run() ;
    
    public void eat() {}
    
}
package com.xdkj.javase.oop06;

public class Bwm extends Car {

    
    public Bwm() {
        super();
    }
    
    public Bwm(int age) {
        super(age);
    }
    
    @Override
    public void run() {
            System.out.println("宝马车行驶!!!");
    }
    @Override
    public void eat() {
        System.out.println("bwm eat oil!!!");
    }
}

接口

接口是一个很特殊的存在:

它是为了解决抽象类的实现类 只能继承一个抽象类而出现的,算是对于抽象类的一种扩展。

接口中可以包含:抽象方法,静态方法,静态常量(默认被static final来修饰),和由default修饰的方法。

public interface Swimming extends Jump,Song{//接口不同于其他类,它可以继承多个接口
    void swim();
    //1.8以后可以使用default修饰的方法
    default void sleep(){
        System.out.println("睡觉");
    }
    //1.8以后可以添加静态方法
    public static void run(){
        System.out.println("跑");
    }
}
  1. 接口不是一个类 interface 修饰
  2. 接口只能被类实现 implements 关机字 实现接口的类称之为接口的实现类
  3. 一个类实现一个接口 必须重写接口中的抽象方法
  4. 接口中只能有抽象方法 抽象方法默认就是abstract 修饰的
  5. 接口中只使用抽象方法声明功能
  6. Java中一个类可以实现多个接口 必须对实现的所有的接口的方法进行重写
  7. 接口就是一个对功能的扩增 谁想对自己的业务功能进行扩增谁就实现这个接口
  8. 一个类可以继承一个类的也同时也可以实现多个接口
  9. 接口可以继承接口,并且可以继承多个接口 接口不能继承类
  10. 接口中的变量只能是静态常量 默认被static final 修饰
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值