物件導向 繼承

2021-08-11 05:20:54 字數 1878 閱讀 6219

在原有物件的基礎上,略作修改,得到乙個新的物件,不影響原有物件的功能。即子類不影響父類,子類可以繼承父類的一些功能 ( **復用 )

function

createperson

(name,***)

createperson.prototype.showname = function

();var p1 = new createperson('小明','男');

p1.showname();//小明

屬性的繼承 : 呼叫父類的建構函式 call

方法的繼承 : for in : 拷貝繼承 (jquery也是採用拷貝繼承extend)

乙個簡單的繼承,但是這種繼承會影響到父類,即父類也會有showjob

function

createstar

(name,***,job)

createstar.prototype = createperson.prototype;

createstar.prototype.showjob = function

();var p2 = new createstar('黃曉明','男','演員');

p2.showname();

var a = ;

var b = a;

b.name = '小強';

alert( a.name );//小強。因為這裡會互相影響

如果是基本型別,比如string,number,則不會出現這樣的問題

思路一:『小明』是字串,則可以通過字串賦值來實現

var a = ;

var b = {};

for(var attr in a)

b.name = '小強';

alert( a.name );//小明。不會影響

可以封裝乙個函式

var a = ;

var b = {};

extend( b , a );

b.name = '小強';

alert( a.name );//小明。不會影響

function

extend

(obj1,obj2)

}

再回到剛才那個問題,進行改寫,現在就不會影響父類了

function

createstar

(name,***,job)

extend( createstar.prototype , createperson.prototype );

createstar.prototype.showjob = function

();var p2 = new createstar('黃曉明','男','演員');

p2.showname();

function

extend

(obj1,obj2)

}

函式和物件型別還是有區別的,函式沒辦法直接修改,類似於b.push(4);只能改變,類似於b = [1,2,3,4];

繼續看下面的例子

var a = [1,2,3];

var b = a;

b.push(4);

alert(a);//[1,2,3,4]

var a = [1,2,3];

var b = a;

b = [1,2,3,4];

alert(a);//[1,2,3]

物件導向繼承

using system class class1 class virtualclass class hiddenclass virtualclass class overrideclass virtualclass 結果為 父類 繼承類using system class class1 class...

物件導向,繼承

物件導向 使用物件時,只關注物件提供的功能,不關注內部實現的細節 特點 抽象 多型 封裝 繼承 組成 方法 函式 屬性 變數 工廠模式 原料 加工 出廠 問題 沒有new 每個物件都創造自己的函式,浪費資源 相當於每次都建立了乙個物件 使用new操作符,替我們建立了乙個空物件 通多this新增屬性 ...

物件導向 繼承

什麼是繼承 子類可以繼承父類共有的屬性和方法。繼承關鍵字是 extends 繼承的優點 實現類的重用,減少 的冗餘。package am 人類 public class people package am 學生類 public class student extends people package...