抽象的问题怎么理解?

baijinjin 2008-09-24 06:56:58
本人初学Java,现在对于多态和接口还很模糊,感觉很抽象,不好理解。 牛人们当时是怎么理解的啊? 请教一下,有没有什么好的方法来理解啊 ?
...全文
170 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
lhf0000 2008-09-29
  • 打赏
  • 举报
回复
做多了,也就理解了~
baijinjin 2008-09-29
  • 打赏
  • 举报
回复
:-),知道了 ,感谢解答………… 以后就不细扣 了
bobor_2008 2008-09-25
  • 打赏
  • 举报
回复
多看书,多练习,多思考.

你就知道了.
哈库纳玛塔塔 2008-09-25
  • 打赏
  • 举报
回复
接口是好东西, 抽象类也是好东西, 在设计程序的抽象层时候使用这2个东西, 要尽量使用接口少用抽象类。

朋友设计的项目多了自然就理解了,初学 抽象类和接口什么时候使用确实是一个头疼的问题。因为抽象类貌似可以代替接口。 其不然。 随着设计的经验增加这2东西你会灵活运用的。
ouyangxiaokang6 2008-09-25
  • 打赏
  • 举报
回复
了解他的概念,然后多些程序就ok了。光看书没有。
jsjlw 2008-09-25
  • 打赏
  • 举报
回复
刚学java这些东西没必要死扣.
wufongming 2008-09-25
  • 打赏
  • 举报
回复
多看书,多练习,多思考
hero_winner 2008-09-24
  • 打赏
  • 举报
回复
貌似多态是相同的动作产生不同的行为,多态实现的是一对多,接口就是为了实现多对多
Xiaoyang 2008-09-24
  • 打赏
  • 举报
回复
先把概念的东西看下,然后自己多动手去做。慢慢的自然就理解了!
ke788 2008-09-24
  • 打赏
  • 举报
回复
奇怪,做好的图都歪了
ke788 2008-09-24
  • 打赏
  • 举报
回复
多 态 机 制



┌─-────-─┐
│ Feed │
├───────┤
│ feed()│
└───┬───┘

┌─────——─————————──┴——————————────────┐
│ │
│ │
┌───┴───┐ ┌───┴───┐
│ Food │ │Animal │
├───────┤ ├───────┤
│ │ │ eat() │
└───┬───┘ └───┬───┘
┌────┴────┐ ┌────┴────┐
│ │ │ │
┌──┴──┐ ┌──┴──┐ ┌──┴──┐ ┌──┴──┐
│Bone │ │Fish │ │ Dog │ │Cat │
├─────┤ ├─────┤ ├─────┤ ├─────┤
│ │ │ │ │eat()│ │eat()│
└─────┘ └─────┘ └─────┘ └─────┘

图1-1 饲养员Feeder、食物Food 和 动物Animal 及它的子类的类框图


public class Feeder{
public void feed(Animal animal, Food food){
animal.eat(food);
}
}


Feeder feeder = new Feeder();
Animal animal = new Dog();
Food food = new Bone();
feeder.feed(animal, food); //给狗喂肉骨头

animal = new Cat();
food = new Fish();
feeder.feed(animal, food); //给猫喂鱼


Animal animal = new Dog();
Dog dog = (Dog)animal; //向下转型,把Animal类型转换为Dog类型
Creature creature = animal; //向上转型,把Animal类型转换为Creature类型


──────────────────────────────────────────────────

例:父类Base和子类Sub中都定义了 实例变量var、实例方法method()、静态变量staticVar和静态
方法staticMethod(),此外,在Sub类中还定义了 实例变量subVar 和 subMethod()。

package com.kejiangwei.test;

class Base{
String var = "BaseVar"; //实例变量
static String staticVar = "StaticBaseVar"; //静态变量

void method(){ //实例方法
System.out.println("Base method");
}

static void staticMethod(){ //静态方法
System.out.println("Static Base method");
}
}

public class Sub extends Base{
String var = "SubVar"; //实例变量
static String staticVar = "StaticSubVar"; //静态变量
void method(){ //覆盖父类的method()方法
System.out.println("Sub method");
}

static void staticMethod(){ //隐藏父类staticMethod()方法
System.out.println("Static Sub method");
}

String subVar = "Var only belonging to Sub";
void subMethod(){
System.out.println("Method only belonging to Sub");
}

public static void main(String[] args){
Base who = new Sub(); //who被声明为Base类型,引用Sub实例
System.out.println("who.var = " + who.var); //打印Base类的var变量
System.out.println("who.staticVar = " + who.staticVar); //打印Base类的staticVar变量
who.method(); //打印Sub实例的method()方法
who.staticMethod(); //打印Base类的staticMethod()方法
}
}
jowzey_liu 2008-09-24
  • 打赏
  • 举报
回复
多看几遍书,要讲起来 不怎么好讲呢···
自己 理解 最重要了·
ZangXT 2008-09-24
  • 打赏
  • 举报
回复
先知道这个东西,不必细抠.写点程序,慢慢有经验了想不明白都难.

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧