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中只能是单继承。而一个类可以实现多个接口。

  • 相关阅读:
    ppa 安装gnome3
    Ubuntu 升级VisualBox后无法启动 Kernel driver not installed (rc=-1908)
    ubuntu 安装 n卡 驱动
    apt-get 介绍。
    linux流量查看工具 iftop
    Ubuntu防火墙 UFW 设置
    Linux Shell快捷键(基本是通用的)
    gnome3 shell快捷键
    day2 -- 字符串常用方法、列表、字典
    day1 -- Python变量、注释、格式化输出字符串、input、if、while、for
  • 原文地址:https://www.cnblogs.com/liupiao/p/9246751.html
Copyright © 2011-2022 走看看