2020/3/19 抽象+接口

抽象

package 面向对象猫猫狗狗.pets;

public abstract class animal {
    public animal(){}
    public String laugh(){
       return "大家都是笑嘻嘻的";
    }
    public static void  eat()
    {
        System.out.println("所有的动物都可以吃");

    }

    public  abstract String run ();
    //抽象方法没有方法体,
    //子类继承父类必须要重写抽象方法
    //除非子类也是抽象方法

}

  • 1)Abstract关键字,定义了abstract的类不能被实例化,定义了abstract的方法在子类中必须被重写,否则编译不通过
  • 2)抽象类:应用场景,某个父类只是知道其子类应该包含怎样的方法,但无法准确知道这些子类如何实现这些方法。
  • 3)抽象方法,没有方法体
  • 4)抽象类,抽象方法存在的意义

public  class pets extends animal {
     String name;
     int month;
     String Variety;
     double price;

   @Override
    public String run() {
        return null;
    }
//继承了抽象类的子类必须重写父类里的方法
//除非子类也是抽象类
}

接口

public interface Ifly {
    //interface 接口
    //默认的是public ,抽象类
    //一般命名方式是Ixx
    //实现接口的类必须实现接口中的所有方法

    int temp = 49;
    //接口里可以定义属性,通过实现接口的类名.属性名,来调用(接口里定义的属性本身默认是静态的)


    public void fly ();//不能有方法体


    default void food(){
        System.out.println("会飞的动物也有jiojio");
    //接口中的默认方法(jdk1.8版本之后才支持的特性)
    //默认方法在实现类中也可以重写
    //如果这个方法重写了,调用该方法的时候,直接调用重写之后的,反之调用默认方法体。
    }

    //接口中的静态方法
    //通过接口名.静态方法名来访问
    static void sleep(){
        System.out.println("会飞的动物也要睡瞌睡");

        cat cat = new cat();
        cat.food();
        //如果想用类里非静态的方法,可以通过new一个实现接口的类。
    }



}
  • 1)Java只支持单继承,如果多继承怎么办呢?比如:手机的发展史,通话,拍照,上网,打游戏,看视频
  • 2)接口中的方法
  • 3)接口中的属性
  • 4)接口中的默认方法(jdk1.8版本之后才支持的一个特性)
  • 5)接口中的静态方法

   //接口是静态的静态的不能new
@Override
       public void fly() {

           //实现接口的类必须实现接口中的所有方法
       }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值