首页 > 编程语言 > 详细

java接口深入

时间:2019-03-25 11:32:42      阅读:142      评论:0      收藏:0      [点我收藏+]

1、抽象类。

  java常规类中,有些方法并不是固定的,而是在不同的情况下有不同的实现的,比如一个人,在公司要工作,在学校要学习,在食堂要吃饭,但是这个人还有相同的地方,比如不论在哪里都要呼吸,看,挺,所有可以把变化的和不变化的分离开。

  正常情况下的类如下:

  

package org;

public class Person {
    public Person action(){
        System.out.println("在公司工作");
        return this;
    }

    public Person look(){
        System.out.println("我就看看!");
        return this;
    };
    
    public Person breath(){
        System.out.println("我随时在呼吸!");
        return this;
    }
    
    public Person listen(){
        System.out.println("我很警惕,随时耳听八方!");
        return this;
    }
    
}

  但是这里边的action方法可能随着环境的变化做出不一样的动作,所有就可以给抽象出来,变成一个抽象的父类

  

package org;

public abstract class Person {
    public abstract Person action();

    public Person look(){
        System.out.println("我就看看!");
        return this;
    };

    public Person breath(){
        System.out.println("我随时在呼吸!");
        return this;
    }

    public Person listen(){
        System.out.println("我很警惕,随时耳听八方!");
        return this;
    }

}

  抽象类和接口类似,都不能有实例。例如:

 

package org;

public abstract class TestIfCanBeInstance {
}

class MyTest{
    public static void main(String[] args) {
        //new TestIfCanBeInstance();‘TestIfCanBeInstance‘ is abstract; cannot be instantiated
    }
}

  

  类中的静态方法没有实现,需要在其子类进行实现。类中有抽象方法,这个类也必须是抽象的。

  抽象类的使用方法如下:

 1 class Test{
 2     public static void main(String[] args) {
 3         new Person(){
 4             @Override
 5             public Person action() {
 6                 System.out.println("我在食堂要吃饭!!!");
 7                 return this;
 8             }
 9         }.action().look().breath().listen();
10     }
11 }

  可以看到,抽象类隐藏了其他方法的实现,也正好符合了java封装的特性。

2、接口

  接口就是一个完全抽象的类,本身可以不提供任何实现(当然jdk8以后出现的接口的默认实现),接口规定了实现这个接口的类改有的模型,接口最伟大的是实现了多继承。

  接口的声明利用关键字interface,声明如下:

  

package org;

public interface Shape {
    void area();
    
    void lenght();
}

  接口的方法默认是public static的,你并不需要将这个声明加上,如果你想将方法声明为private,Modifier ‘private‘ not allowed here。因为接口里的私有声明没有任何意义。

  接口也可以像抽象类一样,引用父类,指向一个实现了这个父类的子类。当我们操作的不是一个具体的方法,而是父类,实现的类之间的解耦和实现的封装化。

  java接口可以通过继承进行扩展。

  接口中的域默认是public static final的,原来会用接口存储一些我们用的变量,后可以用更强大的枚举类代替。

  接口的继承,如果有两个接口的签名方法一样,这对接口的使用没有什么影响。但是如果两个方法名字相同,但是返回值不一样,这就会导致子类的模糊,会发生编译器异常。

 

java接口深入

原文:https://www.cnblogs.com/viceversa/p/10592710.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!