日期:2014-05-20  浏览次数:20754 次

封装 和继承的 疑问!~


封装的单位是对象; 继承的单位是类; 好象扯不上边;


可是对这句话不太理解; 被这些单位给搞晕了!~ 请大家帮忙写这样一个程序:



1.写一个类; 封装类的属性和部分方法; 并且封装构造方法; 写一个继承关系表示不冲突;

2. 在类的内部生成对象封装; 在外部通过一个接口声明 去调用这个类的实例;


说的不太通顺,还请见谅, 希望能给予帮助, 谢谢!~~

------解决方案--------------------
楼主可以考虑设计模式中的抽象工厂模式
------解决方案--------------------


还没有学过模式啊!`大哥!~~~

我主要是想理解透 封装 继承 接口 多态 消息 等的真谛!~

好让自己有一个清晰的思路!~~

我现在看模式还有点难! 但看程序应该不会有太大问题吧!~~~~


------解决方案--------------------
封装的单位是对象;

把多种对像封装在一个对像中

public class FF
{
private int i;//int类型的对像i
pirvate String str;//String类型的对像str
}

FF f = new FF();
f对像中有int对像,也有String类型的对像.都是针对i,str这样的对像的.还可以有其它的对像.


继承的单位是类; 

只能是一个继承其它的类,不能说一个对像继承其它对像.A类继承B类,我也不懂怎么去描述,我只好把理解为Java规范的约定.继承就是类与类之间的.封就是说把多种类型(int.String等)的对像封装在一种类型对像(FF f)中;


------解决方案--------------------
这些东西我能说上一天。。。 。。。
------解决方案--------------------
继承是类与类的.
------解决方案--------------------
楼上的回答其实很详细,也很有耐心,楼主如果不满意的话,可以继续提出来.
你在16楼的回复太冲动了,很打击大家的情绪呢.

lz好象是在自学Java,很佩服楼主的自学精神和专研精神.

我是这么认为的: 楼主要求的程序即使写出来,也体现不了封装,多态,继承 的这些显著特点.

我就以我的理解来举一个例子,希望能简单的体现这3个特点:

以楼主为例:
现在我们有一个CSDNer:

bxdg42578670 
JAVA要自学通 
等 级:一个三角
-----------------------
我用一个抽象类把他的固有特点抽取出来:CSDNer.java 里面有属性的get和set方法,同样是抽象的,没有实现.
然后有一个楼主类继承自这个抽象类:楼主.java
Java code

public abstract class CSDNer
{
  abstract所有属性对应的get和set方法;
}

------解决方案--------------------
路过了,学习了!
------解决方案--------------------
封装 简单点说 就是把你的经常要用的 抽象出一个对象
继承 就是把封装的东西拿过来用 重写等等了
------解决方案--------------------
楼主要实现的就是单例类!!!

楼主所说的封装好像和java中的概念封装不是一个意思!

 单例类
 实现单例类有2中方法
 他们的共同点是 构造方法是private的
第一种方法:在类中提供public static final 成员变量。好处:性能稍微好点
第二中方法:在类中提供private static final 成员变量,然后提供public static 方法获取该实例。不改动api情况下,改动比较灵活

第二个方法是所谓的饿汉式

还有一个注意点:如果单例类需要序列化,那么一定要重写readResolve方法,保证反序列化出来的是一个实例

------解决方案--------------------
ACCP [using]~~Poject 5
理解下面的CODE就不用考虑OOP概念什么的了,直接上机练就OK了

abstract class Animal //父类
{
public boolean mammal = true; //是否哺乳
public boolean carnivorous = true; //是否食肉
public int mood = 1; //情绪,默认好

public boolean isMammal() //显示是否哺乳方法
{
return this.mammal;
}
public boolean isCamivorous() //显示是否食肉方法
{
return this.carnivorous;
}
public void setMood(int mood) //设置情绪
{
this.mood = mood;
}
public int getMood() //显示情绪
{
return this.mood;
}
abstract public String sayHello(); //打招呼方式方法(未完成)
abstract public String sayHello(int mood); //带参打招呼方(未完成)

}

interface LandAnimal //陆生接口
{
public int getNumberOfLegs(); //有脚?(未完成)
}
interface WaterAnimal //水生接口
{
public boolean hasGill(); //有腮?(未完成)
public boolean laysEggs(); //有卵?(未完成)
}
//---------------------DOG------------------------------------

class Dog extends Animal implements LandAnimal //狗类 -:-)继承,拥有Animal所有公属性和方法等!
{
private int numberOfLegs = 4; //狗脚默认4脚 -:-)封装,Dog自己的属性