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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ぺsimon☆ 中级黑马   /  2013-4-15 21:31  /  1112 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 ぺ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 错误

刚刚看到多态的视频,遇到问题了,请各位兄弟帮帮忙

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

6 个回复

倒序浏览
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功能中,并调用学生学习的方法

        }

}
改成这样把  在看下视频 类名大写

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
class duoTai
{
         public static void main(String[] args)
         {
         new doStudent().doSomething(new baseStudent()); //把基础班学生对象放进doStudent功能中,并调用学生学习的方法
         
         new doStudent().doSomething(new advStudent());  //把高级班学生对象放进doStudent功能中,并调用学生学习的方法
         
         }
         
}
你这样改试一下,你原来那样写相当于调用构造函数,而你的类里没有定义构造函数

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
楼上说完了。{:soso_e140:}
回复 使用道具 举报
楼上基本回答OK了.如果代码很多的情况下.把代码发在对话框"<>"这个里面.会很方便阅读的.嘿嘿
回复 使用道具 举报
U芽Lady 发表于 2013-4-15 22:13
class duoTai
{
         public static void main(String[] args)

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

嗯,好的谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马