我知道sereval編程語言。其中大多數是腳本語言,如lua,perl,JS,ruby et.c.如何操作java中的類
但是最近,我開始用Java編程,這個工作很安靜。所以我一直在想JS中存在的某個函數。構造函數的原型,即。爲了進一步理解我的問題,我將以JS爲例。假設你想創建一個狗的應用程序。
function dog(){ this.property1 = value; this.propertr2 = value2; this.propertyN = valueN; //et.c. } //now, I will create sereval instances of the constructor in JS var snoopy = new dog(); var buddy = new dog();
和要命的一部分,我知道JS是可以動態改變 構造的信息和所有是構造 的(因爲它是所謂的實例JS)與原型關鍵字如下:
dog.prototype.bark = function() { console.log("Woof!"); };
而這,不僅改變了信息的回合構造函數,以便每一隻用構造函數創建的狗都會知道如何吠叫,它也會發生變化,以便構造函數的所有實例都可以獲取原型插入的信息,在這種情況下教狗如何吠叫。至極,我們可以在下面的例子中看到:
var someOtherDog = new dog(); someOtherDog.bark(); //output will be: Woof! snoopy.bark(); //output will also be: Woof! buddy.bark(); //you guest it! it will also be: Woof!
所以用這個原型關鍵字JS我可以操縱的構造及其實例。現在,我的問題是:
如何操作java中的類和它們的實例?這甚至可能嗎? ,如果是的話;我應該怎麼做才能在java中做這樣的事情?
class dog { private String hairColor; public dog() { hairColor = "Brown"; } public static void main (String args[]) { dog snoopy = new dog(); dog buddy = new dog(); //now, how do I manipulate the class like I did in JS? } }
在class dog中創建一個名爲woof的方法。另外,以小寫字母開頭的課程風格很糟糕。 –
關於您引用的所有其他語言,Java並不是「先進的」:只是不同而已。靜態類型,這會產生巨大的差異... – fge
您需要創建一個「原型」 - 也就是「Dog」應該是的AKA'interface'。這應該是通用的,適用於所有的狗。從那裏你可以創建每個狗的混凝土實現和/或其屬性可以改變的可變狗。這將允許創建一個'Dog'的實例,它是給定類型的'Dog'(是的,聽起來很奇怪),即'Dog snoopy = new BassetHound()'。您可能希望閱讀[Interfaces and Inheritance](http://docs.oracle.com/javase/tutorial/java/IandI/index.html)以獲得更好的解釋... – MadProgrammer