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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 霞光满树 于 2011-11-5 13:51 编辑

public interface LifeUtility {
        public void info();
}

class FourWheeler implements LifeUtility {
        //接口实现---------------SECTION B-----------------
        public void info() {
                System.out.println("恩。我是四个轮子的交通工具呀。");
        }
   
        public void start() {
                System.out.println("四轮子启动");
        }
}

class Car extends FourWheeler {
        //Car 继承实现
        //方法重载override
        public void info() {
                System.out.println("恩。我是小汽车呀。");
        }

        public void start() {
                System.out.println("小汽车启动");
        }

}

class Bus extends FourWheeler {
        // Bus继承实现
        // 方法重载override
        public void info() {
                System.out.println("恩。我是公交车呀。");
        }

        public void start() {
                System.out.println("公交车启动");
        }
}

//对象引用的两种情况分析:1.接口;2.继承。
public class objectRel {
   //2.有继承关系,故采用多态,增强代码可维护性
        public static void showinfo(FourWheeler fwn) {
                fwn.info();
        }

        public void start(FourWheeler fw) {
                fw.start();
        }

        public static void main(String args[]) {   
            FourWheeler fw = new Car();
                showinfo(fw);
                //FourWheeler fw = new Car();
            //fw.info();继承引用测试,显示父类方法执行结果。
            //LifeUtility lu=new FourWheeler();
            //lu.info();接口引用测试,显示父类方法执行结果。

        }
}




在学习封装,继承,多态,接口。做了小东西。遇到了问题。
我想问一下。上面的那个objectRel类中showinfo为什么必须是static的,否则,编译就不通过,提示为:
can not make a static reference from the non-static method showinfo() from the type objectRel.


评分

参与人数 1技术分 +1 收起 理由
杨玉揆 + 1

查看全部评分

4 个回复

倒序浏览
因为你的main函数是静态的,在static所修饰的函数和语句块中不能使用非static成员字段。

评分

参与人数 1技术分 +1 收起 理由
杨玉揆 + 1

查看全部评分

回复 使用道具 举报
如果不是static的话,你就要创建一个objectRel类的实例,然后调用showinfo方法 比如 objectRel or=new objecrRel();or.showinfo(fw);
这样showinfo可以不用static修饰了

评分

参与人数 1技术分 +1 收起 理由
杨玉揆 + 1

查看全部评分

回复 使用道具 举报
风之末端 发表于 2011-11-5 13:39
如果不是static的话,你就要创建一个objectRel类的实例,然后调用showinfo方法 比如 objectRel or=new obje ...

恩。是的呀。谢谢。
回复 使用道具 举报
wangdeyun 发表于 2011-11-5 13:05
因为你的main函数是静态的,在static所修饰的函数和语句块中不能使用非static成员字段。 ...

恩。有道理。谢啦。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马