可運行的:
創新互聯是一家專業提供晉安企業網站建設,專注與成都網站設計、網站建設、外貿網站建設、HTML5、小程序制作等業務。10年已為晉安眾多企業、政府機構等服務。創新互聯專業網站建設公司優惠進行中。
import java.awt.*;
import java.awt.event.*;
public class BackJFrame extends Frame{
public BackJFrame(){
super("臺球");
setSize(300,300);
setBackground(Color.cyan); //背景
setVisible(true);
addWindowListener(new WindowAdapter()
{
public void windowClosing (WindowEvent e)
{System.exit(0);}
} );
}
public static void main(String args[]){
new BackJFrame();
}
}
措施一:改寫類的實例方法
通過類繼承實現代碼重用不是精確的代碼重用技術,因此它并不是最理想的代碼重用機制。換句話說,如果不繼承整個類的所有方法和數據成員,我們無法重用該類里面的單個方法。繼承總是帶來一些多余的方法和數據成員,它們總是使得重用類里面某個方法的代碼復雜化。另外,派生類對父類的依賴關系也使得代碼進一步復雜化:對父類的改動可能影響子類;修改父類或者子類中的任意一個類時,我們很難記得哪一個方法被子類覆蓋、哪一個方法沒有被子類覆蓋;最后,子類中的覆蓋方法是否要調用父類中的對應方法有時并不顯而易見。
任何方法,只要它執行的是某個單一概念的任務,就其本身而言,它就應該是首選的可重用代碼。為了重用這種代碼,我們必須回歸到面向過程的編程模式,把類的實例方法移出成為全局性的過程。為了提高這種過程的可重用性,過程代碼應該象靜態工具方法一樣編寫:它只能使用自己的輸入參數,只能調用其他全局性的過程,不能使用任何非局部的變量。這種對外部依賴關系的限制簡化了過程的應用,使得過程能夠方便地用于任何地方。當然,由于這種組織方式總是使得代碼具有更清晰的結構,即使是不考慮重用性的代碼也同樣能夠從中獲益。
我寫了一個,內容比較簡單的。代碼如下:public class AnimalTest {
Animal animal;
public void eat(Animal animal){
animal.eat();
}
public void walk(Animal animal){
animal.walk();
}
public static void main(String args[]){
Animal animal=new Animal("animal");
Wolf w=new Wolf("wolf");
Goat g=new Goat("goat");
AnimalTest at=new AnimalTest();
at.eat(animal);
at.eat(w);
at.eat(g);
at.walk(animal);
at.walk(w);
at.walk(g);
}
}
class Animal {
String name;
public Animal(String name){
this.name=name;
}
public Animal(){}
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
public void eat(){
System.out.println("animal eat");
}
public void walk(){
System.out.println("animal walk");
}
public String toString(){
return name;
}
}class Wolf extends Animal {
public Wolf(String name){
super(name);
}
public Wolf(){}
public void eat(){
System.out.println("wolf eat meat");
}
public void walk(){
System.out.println("wolf walk");
}
public String toString(){
return name;
}
}class Goat extends Animal {
public Goat(String name){
super(name);
}
public Goat(){}
public void eat(){
System.out.println("goat eat grass");
}
public void walk(){
System.out.println("goat walk");
}
public String toString(){
return name;
}
}
第一個:
public?class?Yaojing?{
protected?String?name;
protected?int?age;
protected?String?gender;
public?void?showBasicInfo()?{
System.out.println(toString());
}
public?void?eatTangSeng()?{
System.out.println("吃飽了");
}
@Override
public?String?toString()?{
return?"Yaojing?[name="?+?name?+?",?age="?+?age?+?",?gender="?+?gender?+?"]";
}
}
第二個類
public?class?Zhizhujing?extends?Yaojing?{
public?void?buildNet(){
System.out.println("蜘蛛在織網");
}
}
第三個類
public?class?Baigujing?extends?Yaojing?{
public?void?beBeauty(){
System.out.println("白骨精");
}
}
package?extend;
/**
*?圓類
*?@author?楓雅
*?2019年3月21日
*/
public?class?Circle?{
private?double?r;
public?final?static?double?PI?=?3.14;
public?Circle(double?r)?{
this.r?=?r;
}
public?double?Circumference(double?r)?{
return?2*PI*r;
}
public?double?Area(double?r)?{
return?PI*r*r;
}
}
package?extend;
/**
*?圓柱類,繼承自圓類
*?@author?楓雅
*?2019年3月21日
*/
public?class?Cylinder?extends?Circle{
private?double?h;
public?Cylinder(double?r,?double?h)?{
super(r);
this.h?=?h;
}
public?double?CeArea(double?r,?double?h)?{
return?super.Circumference(r)*h;
}
public?double?Volume(double?r,?double?h)?{
return?super.Area(r)*h;
}
}
package?extend;
/**
*?圓錐類,繼承自圓柱類
*?@author?楓雅
*?2019年3月21日
*/
public?class?Cone?extends?Cylinder{
public?Cone(double?r,?double?h)?{
super(r,?h);
}
public?double?CeArea(double?r,?double?h)?{
return?super.CeArea(r,?h)/2;
}
public?double?Volume(double?r,?double?h)?{
return?super.Volume(r,?h)/3;
}
}
package?extend;
/**
*?測試類
*?@author?楓雅
*?2019年3月21日
*/
public?class?Test?{
public?static?void?main(String[]?args)?{
double?r?=?3;
double?h?=?2;
Circle?circle?=?new?Circle(r);
System.out.println("半徑為:"?+?r?+?"?圓的周長為:"?+?circle.Circumference(r));
System.out.println("半徑為:"?+?r?+?"?圓的面積為:"?+?circle.Area(r));
Cylinder?cylinder?=?new?Cylinder(3,?2);
System.out.println("底部半徑為:"?+?r?+?",高為:"?+?h?+?"?圓柱的側面積為:"?+?cylinder.CeArea(r,?h));
System.out.println("底部半徑為:"?+?r?+?",高為:"?+?h?+?"?圓柱的體積為:"?+?cylinder.Volume(r,?h));
Cone?cone?=?new?Cone(3,?2);
System.out.println("底部半徑為:"?+?r?+?",高為:"?+?h?+?"?圓錐的側面積為:"?+?cone.CeArea(r,?h));
System.out.println("底部半徑為:"?+?r?+?",高為:"?+?h?+?"?圓錐的體積為:"?+?cone.Volume(r,?h));
}
}
分享文章:繼承代碼java,如何使用繼承碼
轉載來源:http://vcdvsql.cn/article30/hsssso.html
成都網站建設公司_創新互聯,為您提供App設計、域名注冊、面包屑導航、微信公眾號、響應式網站、關鍵詞優化
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯