zoukankan      html  css  js  c++  java
  • 接口和抽象类

    一、抽象类
    1、抽象方法
    抽象方法是一种特殊的方法:它只有声明,而没有具体的实现。抽象方法的声明格式为:

    1 abstract void function();

    abstract即抽象的意思,可以用来修饰方法和类。如果一个类被abstract修饰,即抽象类,抽象类也必须要用abstract修饰。抽象类中有抽象方法,所以无法用抽象类创建对象。

    2、抽象类

    1 public abstract class Demo4{
    2     private int age = 10;
    3     
    4     public void fun(){
    5         System.out.println(this.age);
    6     }
    7     
    8     public abstract void fun2();
    9 }
    • 抽象类:包含抽象方法的类。
    • 抽象类存在的意义是被继承,因为它本身无法创建对象,如果不被继承,它存在的意义在哪里呢?继承抽象类的子类,必须实现抽象类中的抽象方法。
    • 抽象类中可以包含普通的方法和属性,也可以包含静态方法。

    3、抽象类和普通类的区别

    1)抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public
    2)抽象类不能创建对象,普通类可以
    3)如果一个类继承抽象类,则必须要实现抽象类的抽象方法,如果子类未实现,那这个子类也必须是抽象类

    二、接口

    1、接口的定义

    在java中使用interface关键字表示接口,接口使抽象的概念更进一步。(接口中的方法都是不能有具体实现的)本质上interface这个关键字产生一个完全抽象的类。在interface前可以使用public修饰。

    1 public interface Animal{
    2 
    3 }

    2、接口的特点

    • 接口中可以含有变量和方法,但是接口中定义的域隐式的是static和final的。接口中的方法默认是public abstract的,且只能是public abstract方法,并且方法不能有具体的实现。
    • 一个类要遵循某个接口,或者一组接口,需要使用implements关键字,允许一个类实现多个接口,以此来弥补java中单继承的不足之处。
    • 使用接口能达到解耦的目的,以及在一些设计模式中经常用到,例如:策略模式和适配器,工厂等等。
    • 接口之间可以多继承
     1 interface Dog{
     2     
     3 }
     4 
     5 interface Pig{
     6     
     7 }
     8 
     9 interface SuperAimal extends Dog,Pig{
    10     
    11 }

    3、接口和抽象类的区别

    1)抽象类可以提供成员方法的实现细节,而接口中所有的方法只能是public abstract方法。不过在jdk1.8之后,接口中也能定义带方法体的方法

     1 interface Simple{
     2     
     3     public static void test(){
     4         System.out.println("ssss");
     5     }
     6     
     7     default void show(){
     8         System.out.println("hi");
     9     }
    10 }

    2)抽象类中的成员变量的类型可以是各种类型的,而接口中的成员变量只能是public static final类型的。

    3)在JDK1.8之前,接口中不能含有静态代码块和静态方法,抽象类是可以的,jdk1.8后,接口中可以有静态方法,但是不能有静态代码块

    4)一个类只能继承一个抽象类,即java中只能是单继承。而一个类可以实现多个接口。

  • 相关阅读:
    项目管理5大过程组,42个过程一句话讲解
    在命令中输入信息创建maven项目
    《Maven应用实战》一书的在线学习网址和源码链接
    [转]使用Eclipse创建一个简单的servlet项目
    使用Maven客户端从Maven中心仓库下载到本地的jar包的默认存储位置及远程仓库
    ant利用ivy从maven仓库下载项目所依赖的jar包默认的存储位置
    Ant和Ivy集成部署和使用
    Ant入门简单实例
    TIBCO Jaspersoft Studio-6.12.2连接mysql时显示时区问题
    JAVA Swing日期选择控件datepicker的使用
  • 原文地址:https://www.cnblogs.com/liupiao/p/9246751.html
Copyright © 2011-2022 走看看