黑马程序员技术交流社区

标题: 学多态遇到的问题 [打印本页]

作者: ぺsimon☆    时间: 2013-4-15 21:31
标题: 学多态遇到的问题
本帖最后由 ぺsimon☆ 于 2013-4-16 00:31 编辑

代码如下:
/**
基础班学生:
   学习,睡觉

高级班学生:
   学习,睡觉
*/

abstract class student    //抽象类
{
        public abstract void study();   //定义一个抽象函数
        public void sleep()
        {
        System.out.print("躺着睡觉");
        }
}

class baseStudent extends student   //基础班学生类继承学生类
{
        public void study()    //复写抽象类的抽象方法
        {
        System.out.print("基础班");
        }
        public void sleep()    //复写抽象类的抽象方法
        {
        System.out.print("坐着睡觉");
        }
}

class advStudent extends student   //高级班学生类继承学生类
{
        public void study()       //复写学生类的抽象方法
        {
        System.out.print("高级班");
        }
}
class doStudent
{
        public void doSomething(student s)
        {
        s.study();
        s.sleep();
        }
}
class duoTai
{
        public static void main(String[] args)
        {
        new doStudent(new baseStudent()).study();  //把基础班学生对象放进doStudent功能中,并调用学生学习的方法
        
        new doStudent(new advStudent()).study();   //把高级班学生对象放进doStudent功能中,并调用学生学习的方法
        
        }
        
}

报错如下:
E:\Java\jdk1.6.0_23\experience_heima\08>javac duoTai.java
duoTai.java:49: 找不到符号
符号: 构造函数 doStudent(baseStudent)
位置: 类 doStudent
        new doStudent(new baseStudent()).study();
        ^
duoTai.java:51: 找不到符号
符号: 构造函数 doStudent(advStudent)
位置: 类 doStudent
        new doStudent(new advStudent()).study();
        ^
2 错误

刚刚看到多态的视频,遇到问题了,请各位兄弟帮帮忙
作者: 王九日    时间: 2013-4-15 22:07
abstract class Student // 抽象类
{
        public abstract void study(); // 定义一个抽象函数

        public void sleep() {
                System.out.print("躺着睡觉");
        }
}

class BaseStudent extends Student // 基础班学生类继承学生类
{
        public void study() // 复写抽象类的抽象方法
        {
                System.out.print("基础班");
        }

        public void sleep() // 复写抽象类的抽象方法
        {
                System.out.print("坐着睡觉");
        }
}

class AdvStudent extends Student // 高级班学生类继承学生类
{
        public void study() // 复写学生类的抽象方法
        {
                System.out.print("高级班");
        }
}

class DoStudent {
        public void doSomething(Student s) {
                s.study();
                s.sleep();
        }
}

public class DuoTai {
        public static void main(String[] args) {
                DoStudent ds = new DoStudent();
                ds.doSomething(new BaseStudent()); // 把基础班学生对象放进doStudent功能中,并调用学生学习的方法

                ds.doSomething(new AdvStudent()); // 把高级班学生对象放进doStudent功能中,并调用学生学习的方法

        }

}
改成这样把  在看下视频 类名大写
作者: U芽Lady    时间: 2013-4-15 22:13
class duoTai
{
         public static void main(String[] args)
         {
         new doStudent().doSomething(new baseStudent()); //把基础班学生对象放进doStudent功能中,并调用学生学习的方法
         
         new doStudent().doSomething(new advStudent());  //把高级班学生对象放进doStudent功能中,并调用学生学习的方法
         
         }
         
}
你这样改试一下,你原来那样写相当于调用构造函数,而你的类里没有定义构造函数
作者: 、__WSD吴少东    时间: 2013-4-15 22:14
楼上说完了。{:soso_e140:}
作者: 孙百鑫    时间: 2013-4-15 22:17
楼上基本回答OK了.如果代码很多的情况下.把代码发在对话框"<>"这个里面.会很方便阅读的.嘿嘿
作者: ぺsimon☆    时间: 2013-4-15 23:01
U芽Lady 发表于 2013-4-15 22:13
class duoTai
{
         public static void main(String[] args)

明白了,原来是调用了构造函数,谢谢啦
作者: ぺsimon☆    时间: 2013-4-15 23:01
孙百鑫 发表于 2013-4-15 22:17
楼上基本回答OK了.如果代码很多的情况下.把代码发在对话框""这个里面.会很方便阅读的.嘿嘿 ...

嗯,好的谢谢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2