week03周记(一)

迟来的总结

一、抽象类

抽象类是包含抽象方法的类
抽象类、抽象方法用关键字abstract表示
抽象方法是只有声明而没有方法体的方法。
抽象类的子类必须重写父类当中所有的抽象方法,否则该子类也必须声明为一个抽象类。
抽象类的格式

public abstract class AbstractDemo{//一个类名为AbstractDemo的抽象类
      public abstract void run();//这是一个方法名为run的抽象方法 
}

抽象类的使用

public abstract class AbstractDemo{
    public abstract void run();//
}
public class AbstractSubclass extends AbstractDemo{
      @Override//重写在JDK1.5之后可以省略不写
      public void run(){
     System.out.println("飞奔");
}

}

抽象类的重点:
1.抽象类不能创建对象,如果创建对象,编译无法通过。
2.抽象类中,可以有构造方法,是供子类创建对象是,初始化父类成员使用的。
3.抽象类中,不一定包含抽象方法,但是包含抽象方法的类一定是抽象类。
4.抽象类的子类,必须重写父类中的所有抽象方法,否则编译器无法通过,除非该子类也是抽象类。

二、接口

接口是一种引用类型,是方法的集合,如果说类的内部封装了成员变量、构造方法、成员方法,那么接口的内部主要就是封装了方法,包含了抽象方法(JDK1.7及以前),默认方法和静态方法(JDK1.8),私有方法(JDK1.9)
特点:
1.接口中无法定义成员变量,但是可以定义常量,因为值不可变,默认使用 public static final 修饰。
2.接口中没有构造方法,不能创建对象。
3.接口中没有静态代码块
接口的好处:
1.定义规则
2.降低耦合性【高内聚、低耦合】
3.扩展原有类的功能
接口的定义格式:

public interface InterfaceDemo{
     //常量
     public static final int i = 1;
     //抽象方法
     public abstract void method();
     //默认方法
     public void method1();
     //静态方法
     public static void method2();
}
接口的实现
public interface InterfaceDemo{
     //常量
     public static final int i = 1;
     //抽象方法
     public abstract void method();
     //默认方法
     public  default void method1(){
         System.out.println("这是InterfaceDemo的method1方法");
      }
     public  default void method12(){
        System.out.println("这是InterfaceDemo的method12方法");
      }
     //静态方法
     public static void method2(){
        System.out.println("这是一个静态方法只能通过接口名来调用");
} 
}

public class Interfaceimplement implements InterfaceDemo{
     @Override
     public void  method(){
         System.out.println("这是method方法");
}
  
     @Override
     public  default void method12(){
        System.out.println("这是Interfaceimplement的method12方法");
      }
}

public class Test{
     Interfaceimplement  inter = new Interfaceimplement();
      inter.method;
      inter.method1;
      inter.method12;
      InterfaceDemo.method2;
}

接口的多实现

在继承体系中,一个类只能直接继承一个父类。但是对于接口来说,一个类可以实现多个接口,这叫做接口的【多实现】。并且,一个类能继承一个父类的同时还能实现多个接口。
实现格式:

public class ClassName extends 父类 implements 接口1,接口2.....{
    //重写接口中的所有的抽象方法
    //重写接口中的默认的方法【可选】
    //抽象方法重名
}

对于多实现中的抽象方法,实现类必须重写所有的抽象方法,如果抽象方法有重名的,只需要重写一次即可。
对于多实现中的默认方法,实现类都可以继承使用,如果默认方法有重名的,【必须重写一次】
接口中,如果存在同名的静态方法并不会冲突,原因是只能通过各自的接口名访问静态方法。当一个类既继承了一个父类,又同时实现了多个接口,父类中的成员方法与接口当中的默认方法重名,【子类就近选择父类的成员方法】
提示: 子接口重写默认方法,default关键字保留.

三、接口与抽象类的区别

相同点:
1.都包含抽象方法、子类都必须重写这些抽象方法
2.都不能直接实例化对象
3.都位于继承的顶端,用于被其他类实现或者继承

区别:
1.抽象类里面可以包含普通成员方法,接口不能包含普通成员方法
2.一个类只能直接继承一个父类(可是是抽象类),一个类也可以实现多个接口。
3.类与类之间只能单继承关系,接口与接口之间可以多继承
4.抽象类可以定义普通的成员变量和常量,接口只能定义常量 public static final 修饰的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值