宇晨培训吧 关注:1,145贴子:540
  • 2回复贴,共1

Java抽象类和接口

只看楼主收藏回复

Java抽象类和接口


1楼2019-09-03 10:21回复
      抽象类
      abstract 抽象修饰符——抽象就是为了让子类集成的,并不能直接实现一个对象
      抽象类中所有抽象方法都要在子类中实现
      拥有抽象方法的类必须声明为抽象类
      抽象类可以有非抽象的方法
      接口
      interface 接口修饰符——接口是为了让类实现的
      变量默认是public static final并且不能改变
      方法默认是public abstract并且不能改变
      接口不实现方法


    2楼2019-09-03 10:21
    回复
        0X01 抽象类和接口的区别
        抽象类可以实现方法细节,接口不能
        抽象类的变量可以是各种类型的,接口不能
        抽象类可以有静态代码块和静态方法,接口不能
        一个类可以实现多个接口,而只能继承自一个抽象类
        继承可以理解成“是不是”,接口可以理解成“有没有”
        0X02 举个例子
        有一个接口 CanFly
        public interface CanFly {
        public abstract void fly();
        }
        有一个抽象类 Bird
        public abstract class Bird {
        int age;
        void eat(){
        System.out.println("I can eat insect~");
        }
        }
        有一个 Sparrow 类继承自 Bird
        public class Sparrow extends Bird implements CanFly{
        public void fly(){
        System.out.println("I can fly");
        }
        }
        有一个抽象类 Airplane
        public abstract class Airplane {
        double price;//价格
        void Crash(){ //坠毁
        System.out.println("This airplane is crashed!");
        }
        }
        有一个 Jian_10 类继承自 Airplane
        public class Jian_10 extends Airplane implements CanFly{
        public void fly(){
        System.out.println("I can fly");
        }
        }
        有一个包含主方法的类来测试
        public class Main {
        public static void main(String[] args) {
        Jian_10 A_0 = new Jian_10();//实例化A_0号战机
        Sparrow xiaoMing = new Sparrow();//没错,这只麻雀叫小明
        //我们都能飞
        A_0.fly();
        xiaoMing.fly();
        //小明吃饭了
        xiaoMing.eat();
        //战机坠毁了
        A_0.Crash();
        }
        }
        运行结果是这样的
        I can fly
        I can fly
        I can eat insect~
        This airplane is crashed!
        0X03 粗略解释
        大概是这么回事:
        Airplane 和 Bird 是两个抽象类,Jian_10 和 Sparrow 分别继承自他们,所以子类可以直接调用父类的方法。且 Jian_10 和 Sparrow 还有接口 CanFly 。然后 Jian_10 和 Sparrow 实现了接口 CanFly 中声明的 fly 方法(必须实现)。
        如果以后想要修改 Airplane 和 Bird 两个父类的方法的时候,比如我不想让 Bird 吃东西了或者 Airplane 不会坠毁了,就只需要修改 Airplane 和 Bird 中相应的方法。
        一个类只能继承自一个类 & 抽象类,但是可以实现多个接口
        比如,Airplane 和 Bird 有很多相同的方法,但是实现不尽相同,我们就可以把这些方法放到一个接口中。


      3楼2019-09-03 10:22
      回复