欢迎各位进来交流!!如果顺便能给讲讲内存的存储情况最好了
今天学的多态,写了个榨果汁的程序如下:
首先定义了个水果抽象类:public abstract class Fruit {
//成员变量
private String name;
//构造方法
public Fruit() { }
public Fruit(String name) {
this.name = name;
}
//成员方法get/set方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
//抽象方法
public abstract void toGuoZhi();
}
而后定义了它的三个子类:
一、苹果类:
public class Apple extends Fruit{
//构造方法
public Apple() {
super();
// TODO Auto-generated constructor stub
}
public Apple(String name) {
super(name);
// TODO Auto-generated constructor stub
}
//实现方法
@Override
public void toGuoZhi() {
System.out.println(this.getName());
System.out.println("榨成苹果汁");
}
}
二、西红柿类:
public class Potato extends Fruit {
//构造方法
public Potato() {
super();
}
public Potato(String name) {
super(name);
}
//方法重写
@Override
public void toGuoZhi() {
System.out.println(super.getName());
System.out.println("榨成西红柿汁...");
}
}
三、橙子类
public class Orange extends Fruit{
//构造方法
Orange(){
super();
}
Orange(String name){
super(name);
}
public void toGuoZhi(){
System.out.println(this.getName());
System.out.println("榨成橙汁...");
}
}
然后定义了个榨汁机,来实现榨汁的功能:
public class ZhaZhiJi {
//成员变量
private String name;
//构造方法
ZhaZhiJi(){}
ZhaZhiJi(String name){
this.name = name;
}
//成员方法
public void setName(){
this.name = name;
}
public String getName(){
return this.name;
}
//功能方法
public void ZhaZhi(Fruit f){
f.toGuoZhi();
}
}
最后子饿出他的测试类,在写测试类的是后突然问题来了,然后想了一晚自习,还在卡着,测试程序如下:
public class ZhazhiJiTest {
public static void main(String[] args) {
//用多态创建对象
Fruit a = new Apple("苹果");
ZhaZhiJi zzj = new ZhaZhiJi("九阳榨汁机");
System.out.println(a.getName());
//调用榨汁的方法
zzj.ZhaZhi(a);
Potato p = new Potato("西红柿");
zzj.ZhaZhi(p);
Potato p1 = new Potato("小西红柿");
zzj.ZhaZhi(p1);
System.out.println(p.getName());
/*问题来了:
* 首先父类private的name不能被子类继承,也就是子类里没有变量name来接受String型的名字,那么这个名字放到了呢里?
*/
//问:创建子类对象的同事父类做了什么?有没有创建父类的对象或空间,西红柿放到了哪里?是变量池?
//由于父类为抽象类所以肯定没有穿件父类对象,那么西红柿是放哪了?
Fruit o = new Orange("橙子");
//问:橙子放哪了?
}
求高手解答!!!!!!!
}
|
|