Home  >  Article  >  Java  >  Learn more about the difference between Java interfaces and abstract classes

Learn more about the difference between Java interfaces and abstract classes

黄舟
黄舟Original
2017-03-15 13:20:461400browse



## --Lu You

Ask the canal how clear it is so that there is a source of running water --Zhu Xi

Interface, interface, interface generally refers to methods and methods for others to call

function

. Form of interface:

public interface interfaceName
{
        public static final   变量;
        void FunctionName(args);
}
Features of interface:

1),

Interface can contain variables and methods.

#2), where the variable is implicitly designated as a public static final variable and can only be such a variable.

#3). Interface methods are implicitly designated as public abstract methods and can only be public abstract methods.

#4). The methods in the interface cannot have specific implementations. They are all abstract methods. The interface is an extremely abstract type.

5). A class can implement multiple interfaces and can only

inherit one abstract class.

#6), interface methods must be implemented in subclasses.


Simple example:

//声明一个接口
interface Say {
    public void sayMessage();
}
//两个实现类
class SayHello implements Say {
    public void sayMessage() {
        System.out.println("hello");
    }
}
class SayHi implements Say {
    public void sayMessage() {
        System.out.println("Hi");
    }
}
public class TestSay {
    public static void main(String[] args) {
        //同样都是用Say这个接口类型实例,却可以输出两个结果
        Say say = new SayHello();
        say.sayMessage();
        Say say1 = new SayHi();
        say1.sayMessage();
    }
}
###Abstract class:#########The general definition of an abstract class is a class that contains abstract methods. Of course, just use abstract to describe the class. Modification, if there is no abstract method, it is also an abstract class, but that doesn't make much sense. ######Form of abstract class:###
public abstract abstractName
{
    abstract void function();
    其他的正常类发方法与变量;
}
######Characteristics of abstract class###:#########1), abstract class not only contains abstract methods, but also Like ordinary classes, they have variables and ordinary methods. ############2), abstract methods can only be public or protected, because abstract classes are intended to be inherited, and private methods are meaningless. ############3), abstract class cannot be used to ###create objects###, it is used to be inherited. ############4). A subclass that inherits an abstract class must implement the abstract method of the abstract class, otherwise the subclass is also an abstract class. ###############

抽象类示例:

public class Child extends Children{
    public Child(String name) {
        super(name);
    }

    public void printName() {
        System.out.println(super.getName());
    }


    public static void main(String[] args) {
        Child boy = new Child("Charley");
        System.out.println(boy.getName());
        Child girl = new Child("Queenie");
        girl.printName();
    }
}

abstract class Children {
    private String name;

    public Children(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    abstract void printName();
}

抽象类和接口的区别

(1)抽象类可以有构造方法,接口内不能有构造方法

(2)抽象类中可以有普通成员变量,接口中的变量都是public static  final修饰的

(3)抽象类中可以包含非抽象的普通方法,接口中的方法默认是抽象方法

(4)抽象类中的抽象方法可以是public,protected、默认类型,接口中的抽象方法是public,默认是public abstract类型

(5)抽象类中可以有静态方法,接口中不包含静态方法

(6)抽象类和接口中都可以有静态成员变量,抽象类中的静态成员变量可以是任意访问类型的,接口中的静态成员变量只能是public static

(7)一个类可以实现多个接口,但只能继承一个抽象类

The above is the detailed content of Learn more about the difference between Java interfaces and abstract classes. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn