以下に、2つの例を使用して、Javaの多型のスケーラビリティを完全に説明します。優れたプログラマーとして、プログラムのスケーラビリティを理解する必要があります。これは、その後のプログラムの開発に非常に役立ちます。
最初の例:
例として、コンピューターのマザーボードを使用してください。よく知っているコンピューターのマザーボードには、多くのモジュール、ネットワークカード、サウンドカードがありますか?これらの機能を使用する場合は、マザーボードを使用して実行してからネットワークカードとサウンドカードの電源のみを使用できます。しかし、これはソフトウェア言語でどのように達成できますか?最初にマザーボードを実行し、次にサウンドカードまたはネットワークカードを実行する必要がありますか?しかし、このようにして、拡張は高くなく、サウンドカードとネットワークカードの実行の操作が繰り返されます。さらに、多くのモジュールにもそのような機能があるため、マザーボードでモジュールを単純に実行できます。これはそれらの1つです。その日、テクノロジーが更新され、新しいモジュールが表示された場合、モジュールオブジェクトを作成してから再度実行する必要がありますか?これは明らかに開発を助長しません。ただし、この問題については、マザーボードメーカーがサウンドカードおよびネットワークカードメーカーと話し合う後、PCIインターフェイスを使用して将来マザーボードとモジュールを接続し、更新を使用または再利用できないという問題を完全に解決します。これは、Javaの多型に対応しています。多型を使用して、プログラムのスケーラビリティを大幅に改善できます!
特定のコードは次のとおりです!
/*要件:マザーボードに基づいて実行されるコンピューターの実行例。 */interface pci {public void open(); public void close();} class mainboard {public void run(){system.out.println( "mainboard run"); } public void usepci(pci p)// pci p = new netcard()//インターフェイス参照は、独自のサブクラスオブジェクトを指します。 {if(p!= null){p.open(); p.close(); }}} class netcardを実装しますpci {public void open(){system.out.println( "netcard open"); } public void close(){system.out.println( "netcard close");方法(); }} class soundcardを実装しますpci {public void open(){system.out.println( "soundcard open"); } public void close(){system.out.println( "soundcard close"); }}/*class mainboard {public void run(){system.out.println( "mainboard run"); } public void usenetcard(netcard c){c.open(); c.close(); }} class netcard {public void open(){system.out.println( "netcard open"); } public void close(){system.out.println( "netcard close"); }}*/class duotaidemo5 {public static void main(string [] args){mainboard mb = new mainboard(); mb.run(); mb.usepci(null); mb.usepci(new netcard()); mb.usepci(new SoundCard()); }}2番目の例:
一般的なデータベースを使用して、多型を説明します。よく知っているデータベースについては、現在、JDBCとHibernatelian Connectionの2つのデータベース接続モードがあります。データベースを使用する場合、2つの重要な操作があります。接続と閉鎖です。この時点で、インターフェイスを使用してこれら2つの操作をカプセル化すると、接続モードを使用してクラス名を直接変更する必要があります。
特定のコードは次のとおりです!
/*要件:データベース操作。データは次のとおりです。ユーザー情報。 1.データベースに接続します。 JDBC hibernate2はデータベースを操作します。 c r read u update d delete3を作成し、データベース接続を閉じます。 */interface userinfodao {public void add(user user); public void delete(user user);} class userininfobyjdbcはuserinofdaoを実装します{public void add(user user){1、jdbcはデータベースに接続します。 ; 2。SQLを使用してステートメントを追加してデータを追加します。 ; 3、接続を閉じます。 } public void delete(user user){1、jdbcはデータベースに接続します。 ; 2。SQLの追加ステートメントを使用してデータを削除します。 ; 3、接続を閉じます。 }} class userInfobyhibernateを実装しているuserinfodao {public void add(user user){1、hibernateはデータベースに接続します。 ; 2。SQLを使用してステートメントを追加してデータを追加します。 ; 3、接続を閉じます。 } public void delete(user user){1、hibernateがデータベースに接続します。 ; 2。SQLの追加ステートメントを使用してデータを削除します。 ; 3、接続を閉じます。 }} class dboperate {public static void main(string [] args){// userinfobyjdbc ui = new userinfobyjdbc(); // userinfobyhibernate ui = new userinfobyhibernate(); userinfodao ui = new userinfobyhibernate(); ui.add(user); ui.delete(user); }}要約:
1.両方の例は、インターフェイスを使用して、いくつかの反復操作を抽象化します。さまざまなモジュールがこれらの操作を直接かつ迅速に使用できるようにするために、多型の上方変換を直接使用し(以前のブログを参照)、親クラスの参照を使用してそれを呼び出すことができます。とにかく、テクノロジーが更新され、新しいモジュールが利用可能か、既存のモジュールが置き換えられていても、親クラスの参照を使用して共通操作を直接呼び出すことができます。
2。インターフェイスを使用する必要はありません。抽象クラスを使用することもできます。ただし、インターフェイスを使用すると、よりスケーラブルになります。将来それらを更新すると、抽象クラスを変更せずにインターフェイスを直接変更できます。第二に、インターフェイスを使用することはさらに継承できます!これも便利な場所です。
上記の記事Javaでは、2つの例を使用して、多型のスケーラビリティを完全に説明しています。これは私があなたと共有するすべてのコンテンツです。参照を提供できることを願っています。wulin.comをもっとサポートできることを願っています。