关于如何理解面向对象编程属性这个概念的理解,求助大侠给小弟一个清晰明了的解答,不胜感激!!! 100
下面段代码中姓名和年龄这这两属性根据属性的定义(属性指的是类中对象所具有的性质)可以很好的理解,可是privateWomanwife;privateManhusband;...
下面段代码中姓名和年龄这这两属性根据属性的定义(属性指的是类中对象所具有的性质)可以很好的理解,可是private Woman wife;private Man husband;这两个Man类和Woman类中对象形式的属性怎么样去理解???该如何理解一个类的属性返回的是另一个类???求高手指点迷津!!!
有个老师给我讲过一个例子,说鸟类的羽毛的颜色,体重就是一个鸟类的属性。这个我可以理解,bird.color=red;bird.weight=10;
但是按照下面的这段代码的意思,鸟的一对翅膀是不是也就算是鸟类的一个属性?可是鸟的翅膀是另一个类啊,也就是一个翅膀类。翅膀应该属于鸟的一部分啊,体重却是一个鸟的整体的一个特征,特征是属性我可以理解,不知该如何理解组成的一部分是属性。
class Man{
private String name;
private int age;
private Woman wife;
public Woman getWife(){
return wife;
}
public void setWife(Woman wife){
this.wife=wife;
}
public String getName(){
return name;
}
public void setName(String name){
this.name=name;
}
public int getAge(){
retrun age;
}
public void setAge(){
this.age=age;
}
}
class Woman{
private String name;
private int age;
private Man husband;
public String getName(){
return name;
}
public void setName(){
this.name=name;
}
public int getAge(){
return age;
}
public void setAge(int age){
this.age=age;
}
public Man getHusband(){
return husband;
}
public void setHusband(Man husband){
this.husband=husband;
}
} 展开
有个老师给我讲过一个例子,说鸟类的羽毛的颜色,体重就是一个鸟类的属性。这个我可以理解,bird.color=red;bird.weight=10;
但是按照下面的这段代码的意思,鸟的一对翅膀是不是也就算是鸟类的一个属性?可是鸟的翅膀是另一个类啊,也就是一个翅膀类。翅膀应该属于鸟的一部分啊,体重却是一个鸟的整体的一个特征,特征是属性我可以理解,不知该如何理解组成的一部分是属性。
class Man{
private String name;
private int age;
private Woman wife;
public Woman getWife(){
return wife;
}
public void setWife(Woman wife){
this.wife=wife;
}
public String getName(){
return name;
}
public void setName(String name){
this.name=name;
}
public int getAge(){
retrun age;
}
public void setAge(){
this.age=age;
}
}
class Woman{
private String name;
private int age;
private Man husband;
public String getName(){
return name;
}
public void setName(){
this.name=name;
}
public int getAge(){
return age;
}
public void setAge(int age){
this.age=age;
}
public Man getHusband(){
return husband;
}
public void setHusband(Man husband){
this.husband=husband;
}
} 展开
展开全部
属性和行为是一组对象(类)的本质特征,这组对象就因为这些属性和行为而存在的,换句话说如果缺少了这些属性,这个类就不是这个类了!
比如Man肯定要有Man的属性(生理特征,这个特征可以区分男人和女人),但是一个Man不一定要有Wife才算Man的,所以Wife不是Man的一个属性,相反Wife是Husband的一个属性,而husband是一个Man(既Hasband是Man的子类).
你说的那个鸟类的翅膀当然是鸟的属性了,因为有翅膀的生物都是鸟嘛!
实际上你的类定义里面除了方法以外其他的基本上都可以看做属性的。
每个类都有静态属性和动态属性,如:每个人都有年龄这个属性,但是具体的年龄值是变化的。
静态属性有类来定义,而动态属性则由对象来定义。
所以类有属性和行为,对象有行为、状态和标识符。
以上回答仅供参考,楼主慎取之。
比如Man肯定要有Man的属性(生理特征,这个特征可以区分男人和女人),但是一个Man不一定要有Wife才算Man的,所以Wife不是Man的一个属性,相反Wife是Husband的一个属性,而husband是一个Man(既Hasband是Man的子类).
你说的那个鸟类的翅膀当然是鸟的属性了,因为有翅膀的生物都是鸟嘛!
实际上你的类定义里面除了方法以外其他的基本上都可以看做属性的。
每个类都有静态属性和动态属性,如:每个人都有年龄这个属性,但是具体的年龄值是变化的。
静态属性有类来定义,而动态属性则由对象来定义。
所以类有属性和行为,对象有行为、状态和标识符。
以上回答仅供参考,楼主慎取之。
展开全部
属性的存在方式、可以代表的是一切对象,而不只是简单的值类型属性。
在属性里,其实保留的只是对象的访问地址,并不总是装着对应东西的具体内容,外界访问属性,其实属性只是返回属性现在所代表的对象内容在内存中的位置,只是一个内存地址指针。所以一个 “Car”,可以有4个 “轮”、两倒后镜、一引擎、一外壳、4座位、4侧窗、1前窗1后窗,等等,并不是说Car类里把其它的这些类都真的 “集中在一块内存了” ,而是在Car里有其它组成部分的指向列表,这些是已经抽象并归类了的对象,每个对象其实里边还可以继续延伸下一层的对象分拆,例如轮子一定有铃与肽两样东西,肽则有它相关的属性,铃也有不同的属性,但它们都给最顶的Car给套住了,就像绳子一样,把它们都串成了木偶似的了。
所以:Car.Tire[0].Weight 代表的是汽车的第一个轮的重量
Car.Shell.Color 代表的是汽车外壳的颜色
Car.Weight 则是整台汽车的重量
这些在OOP编程里一个对象包含另外的对象的情况,叫 “复合”。
我推荐一本书给你看,《Head First》(中文版),你需要了解对象,继承,复合,模式等等和OOP思想一起的所有间接机制。
所以现在你要的是解开对属性产生的一些限制性观念,这样属性除了值,还可以是任何对象,这样可能就好理解了,不必和过去的比喻去执着定义问题。它的核心观念就是 “间接机制”。
在属性里,其实保留的只是对象的访问地址,并不总是装着对应东西的具体内容,外界访问属性,其实属性只是返回属性现在所代表的对象内容在内存中的位置,只是一个内存地址指针。所以一个 “Car”,可以有4个 “轮”、两倒后镜、一引擎、一外壳、4座位、4侧窗、1前窗1后窗,等等,并不是说Car类里把其它的这些类都真的 “集中在一块内存了” ,而是在Car里有其它组成部分的指向列表,这些是已经抽象并归类了的对象,每个对象其实里边还可以继续延伸下一层的对象分拆,例如轮子一定有铃与肽两样东西,肽则有它相关的属性,铃也有不同的属性,但它们都给最顶的Car给套住了,就像绳子一样,把它们都串成了木偶似的了。
所以:Car.Tire[0].Weight 代表的是汽车的第一个轮的重量
Car.Shell.Color 代表的是汽车外壳的颜色
Car.Weight 则是整台汽车的重量
这些在OOP编程里一个对象包含另外的对象的情况,叫 “复合”。
我推荐一本书给你看,《Head First》(中文版),你需要了解对象,继承,复合,模式等等和OOP思想一起的所有间接机制。
所以现在你要的是解开对属性产生的一些限制性观念,这样属性除了值,还可以是任何对象,这样可能就好理解了,不必和过去的比喻去执着定义问题。它的核心观念就是 “间接机制”。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询