我可以创建一个接口对象并实现实现接口的java文件的功能而不覆盖它吗?

时间:2017-11-06 09:13:31

标签: java interface

//接口类

public interface Square {

    public void printHeight();
    public void printWidth();
}

//实现接口类的java类

public class Square1 implements Square{

    public void printHeight(){
        System.out.println("height");
    }

    public void printWidth(){
         System.out.println("width");
    }
}

//将在不覆盖方法的情况下创建对象接口的Action类     公共类测试扩展了 someabstractclass {

    private Square perfectSquare;


    @Override
    public void print(){
       perfectSquare.printHeight();
    }     
}

运行此perfectSquare.printHeight()时,它能够在控制台中显示

    height

它是如何工作的?

1 个答案:

答案 0 :(得分:0)

此声明定义接口类型的变量(import { BrowserModule } from '@angular/platform-browser'; import { ErrorHandler, NgModule } from '@angular/core'; import { IonicApp, IonicErrorHandler, IonicModule } from 'ionic-angular'; import { SplashScreen } from '@ionic-native/splash-screen'; import { StatusBar } from '@ionic-native/status-bar'; import {HTTP} from '@ionic-native/http'; import { MyApp } from './app.component'; import { HomePage } from '../pages/home/home'; @NgModule({ declarations: [ MyApp, HomePage ], imports: [ BrowserModule, IonicModule.forRoot(MyApp) ], bootstrap: [IonicApp], entryComponents: [ MyApp, HomePage ], providers: [ StatusBar, SplashScreen, HTTP, {provide: ErrorHandler, useClass: IonicErrorHandler} ] }) export class AppModule {} ):

Square

该变量可以包含对实现private Square perfectSquare; 接口的类(例如Square1类)的对象的引用。

因此,您可以在该变量上调用Square接口的方法(例如Square)。

当然,这假定您在使用变量之前初始化变量。否则,您将在运行时获得perfectSquare.printHeight()

鉴于您声称获得的“高度”输出,您可能已将NullPointerException变量的对象分配给perfectSquare类(在某些代码中未包含在问题中)。