`

Java中抽象类(abstract)与接口(interface)

    博客分类:
  • Java
阅读更多
1. Java中抽象类abstract

抽象类不能实例化(不能用抽象类创建对象)。
抽象方法就是被abstract修饰的方法,有声明无实现。抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public。

如果一个类包含了抽象方法,那么这个类一定是抽象类。
如果一个类是抽象类,它可以包含具体的方法,可以包含抽象方法。
如果一个类继承于一个抽象类,则子类必须实现父类的抽象方法。如果子类没有实现父类的抽象方法,则必须将子类也定义为为abstract类。

public class Test {
    public static void main(String[] args){
        R r = new R();
    }
}
abstract class T {
    public abstract void method();
    public void test(){
        System.out.println("test");
    }
}
class R extends T {
    public void method(){
        System.out.println("method");
    }	
}


2. Java中接口interface

接口,英文称作interface,接口泛指供别人调用的方法或者函数。

接口中的变量会被隐式地指定为public static final变量。
接口中的所有方法都是抽象方法(无实现,abstract可以省略)。

类实现了接口(类不是抽象类),必须实现接口中所有的方法。
一个类可以实现多个接口,接口之间用“,”分割即可。
接口类型也可以使用多态。

public class Test{
    public static void main(String[] args){
        MyClass myClass = new MyClass();
        myClass.output();
        myClass.output2();
        myClass.output3();
	}
}
interface MyInterface{
    public void output();
}
interface MyInterface2{
    public void output2();	
}
class MyParent{
    public void output3(){
        System.out.println("output3");
    }
}
class MyClass extends MyParent implements MyInterface, MyInterface2{
    public void output(){
        System.out.println("output");
    }
    public void output2(){
        System.out.println("output2");
    }	
}


3. Java中抽象类abstract与接口interface对比

1) 抽象类中可以有具体方法,也可以有抽象方法;接口中只能有抽象方法,不能有具体方法;
2) 抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的;
3) 接口中不能含有静态代码块以及静态方法;而抽象类可以有静态代码块和静态方法;
4) 一个类只能继承一个抽象类;而一个类却可以实现多个接口;

补充:
1) 抽象类是对一种事物的抽象,即对类抽象,而接口是对行为的抽象。例如:飞机和鸟是不同类的事物,但是它们都有一个共性,就是都会飞。我们将Airplane,bird定义为抽象类,将fly定义为接口。继承抽象类是一个“是不是”关系,而接口实现则是“有没有”的关系。
2) 抽象类作为很多子类的父类,它是一种模板式设计。而接口是一种行为规范,它是一种辐射式设计。
分享到:
评论

相关推荐

    Java中抽象类和接口的区别

    在Java语言中,abstract class和interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,...

    详细解析Java中抽象类和接口的区别

    抽象类和接口的区别 在Java语言中, abstract class 和interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的 面向对象能力。abstract class和interface之间在对于抽象类定义的支持...

    Java中抽象类和接口的区别与作用详解

    结论:abstract class和Interface是JAVA语言中的两种定义抽象类的方式。Interface将abstract的概念作了更进一步的发挥。你可以想像Interface是“纯粹”的 abstract class,只可以包含抽象方法,也包括一些常量的定义...

    JAVA中抽象类和接口的区别

    在Java语言中,abstract class 和interface 是支持抽象类定义的两种机制区别

    JAVA中抽象类与接口的区别

    在Java语言中, abstract class 和interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的 面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性...

    Java中抽象类和接口的区别.zip_java interf

    在Java语言中,abstract class和interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,...

    浅析Java抽象类和接口的比较

    abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。

    深入理解abstract class和interface

    abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性...

    Java中interface接口与abstractclas

    Java中interface接口与abstractclass抽象类的区别共2页.pdf.zip

    Java语言提供的一种接口(interface)机制

    Java语言提供了一种接口(interface)机制。...你可以把一个接口看成是一个纯的抽象类。理解并用好接口机制将帮助我们更好的掌握Java这种面向对象的编程语言。本文讨论了一下接口的使用规则以及相关的应用。

    Java学习笔记---15.面向对象编程10-Java中final关键字,抽象类与接口

    好啊好啊 抽象类与接口是Java中最重要部分之一,这里用较大的篇幅来做下这部分的笔记. 1. final关键字 在Java中, 可以使用final关键字修饰类、方法以及成员变量。 (1).final标记的类不能被继承; (2).final标记...

    java高级类操作 接口与抽象类的操作

    circle Rectangle等类在接口中计抽象类中的用法 抽象类 接口多态 public class Polymorphism { public static void main(String args[]) { Triangle t=new Triangle(5.0,2.0); t.show_area(); Rectangle r=...

    接口和抽象类的区别(面向对象)

    接口与抽象类的区别 抽象方法是必须实现的方法。就象动物都要呼吸。但是鱼用鳃呼吸,猪用肺呼吸。 动物类要有呼吸方法。怎么呼吸就是子类的事了。 现在有很多讨论和建议提倡用interface代替abstract类,两者从...

    Java抽象类与接口的区别

    含有abstract修饰符的class 即为抽象类,abstract类不能创建实例对象,含有abstract的方法的类必须定义为abstract class ,abstract class 里的方法不必是抽象的,抽象类中定义抽象方法必须放在具体子类中实现,所以...

    JAVA SE 开发手册.CHM

    10、JAVA面向对象抽象类abstract 11、JAVA面向对象接口interface 12、JAVA面向对象之内部类、匿名内部类 13、JAVA集合框架之简介 14、JAVA集合框架之list接口、LinkedList类、ArrayList类、Vector类 15、JAVA...

    Java程序开发中abstract 和 interface的区别详解

    abstract class和interface在Java语言中都是用来进行抽象类。但是两者有什么区别呢,接下来小编给大家带来了abstract 和 interface的区别详解,感兴趣的朋友一起学习吧

Global site tag (gtag.js) - Google Analytics