A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 赵浩霖 中级黑马   /  2016-3-29 22:28  /  802 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

欢迎各位进来交流!!如果顺便能给讲讲内存的存储情况最好了
今天学的多态,写了个榨果汁的程序如下:
首先定义了个水果抽象类: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("橙子");
                //问:橙子放哪了?
               
               
        }
求高手解答!!!!!!!

}


5 个回复

倒序浏览
加油吧,要考试
回复 使用道具 举报
恩,这个老师上课没讲,但我想弄明白些。觉得有利于理解也有利于运用
回复 使用道具 举报


恩,这个老师上课没讲,但我想弄明白些。觉得有利于理解也有利于运用,考试嘛也许有用
回复 使用道具 举报
有点迷糊,学习学习
回复 使用道具 举报
cxy374100657 发表于 2016-3-29 22:37
有点迷糊,学习学习

我也迷糊了,期待解答
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马