java中的继承
class Fa{
}
class Zi extends Fa{}
interface T{} interface Q{}
class T1 implements T,implements Q,extends Zi{
}
java里面的OOP
很简单。
我的目标是研究js里的OOP和Java的异同,以及优劣
。
js(es5)中的面相对象
function==>构造函数
new function名 ==> 创建对象
prototype
==> 父的变量传递给子,子的__proto__
指向这个属性| java:直接把父的所有成员属性和方法给继承过来。(先不管static)。
为什么?javascript中有多态吗?没有。有继承么?没有。继承是干什么的?是让子继承父元素的成员变量和方法的。js中有啥?变量,方法,对象。那js咋整面相对象?hack呗,给个指针个你,让父类对象的,且专门留给子的方法和属性,给子类。子类也拿过来这个指针去搞父类。完了么?没有!既然都是对象了,那构造函数呢?创建对象呢?在子类的__proto__里面有构造器,这样就和类产生关联。
js(es5)里的继承
//class
function Fa(){
}
//class的静态方法和变量
function Fa(){
name:'',
age:18,
function method1(){
//do some thing
}
}
//class的成员变量和方法
function Fa(){
}
Fa.prototype.name = '';
Fa.prototype.age=18;
Fa.prototype.method1=function(){}
为什么js中要有如此奇怪的继承
js的继承是靠上的。
js他对象是属性,他里面prototype更像是一种类型,一种类,一种模板。而且这个类,这个模板,还有构造器。哈哈哈,好像明白了。
1.js中的继承和java比没有类的概念。
2.js更像是对象的继承。
3.js中对象的继承就是java里的创建对象。
他和java克隆的区别有以下几点:
1.克隆他是对象和对象之间的,有同级关系。而继承是有层级关系。
2.克隆他可以通过重写来灵活地达到一个深拷贝的效果。而继承呢,他就是浅拷贝的。改不了。(硬是要改那就不说了)
也有几点联系:
1.我感觉克隆就是一个创建对象嘛,只不过克隆他可以自定义。至于为什么用实现接口的方式,那就是设计者的问题了,和我们无关。
定义,js中原型是什么?
原型是属性,是指针,是面相对象中继承的实现hack
.