JavaScript和Java都支持面向?qū)ο缶幊蹋鼈儗?shí)現(xiàn)面向?qū)ο蟮姆绞接兴煌?/p>
JavaScript使用原型繼承,每個(gè)對(duì)象都有一個(gè)指向其原型的指針。當(dāng)讀取一個(gè)屬性時(shí),如果該對(duì)象本身沒(méi)有這個(gè)屬性,JavaScript會(huì)沿著原型鏈向上查找直到找到該屬性或原型鏈結(jié)束。這種靈活的方式使得JavaScript程序員可以輕松地編寫(xiě)可重用的代碼。
function Person(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
Person.prototype.sayHello = function() {
console.log("Hello " + this.firstName + " " + this.lastName);
};
var person = new Person("John", "Doe");
person.sayHello(); //輸出 "Hello John Doe"
Java則使用類繼承。每個(gè)對(duì)象都是一個(gè)類的實(shí)例,類定義了對(duì)象的屬性和方法。當(dāng)需要重用代碼時(shí),Java程序員可以通過(guò)創(chuàng)建一個(gè)類來(lái)定義新的對(duì)象。Java還提供了訪問(wèn)修飾符來(lái)控制對(duì)象屬性和方法的可見(jiàn)性。這種方式使得Java程序員可以更好地控制其代碼。
public class Person {
private String firstName;
private String lastName;
public Person(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
public void sayHello() {
System.out.println("Hello " + this.firstName + " " + this.lastName);
}
}
Person person = new Person("John", "Doe");
person.sayHello(); //輸出 "Hello John Doe"
盡管JavaScript和Java對(duì)面向?qū)ο蟮膶?shí)現(xiàn)方式不同,但它們都可以使用對(duì)象和繼承來(lái)編寫(xiě)模塊化和可重用的代碼。程序員可以選擇使用哪種方式,具體取決于其個(gè)人偏好和項(xiàng)目需求。