黑马程序员技术交流社区

标题: 到底错哪了?好烦啊 [打印本页]

作者: 虫虫同学    时间: 2015-8-28 08:02
标题: 到底错哪了?好烦啊
  1. public class DuoTaiDemo5 {
  2.        
  3.         interface PCI{
  4.                 public void open();
  5.                 public void close();
  6.                
  7.         }
  8.        
  9.         class NetCard implements PCI{
  10.                 public void open(){
  11.                         System.out.println("网卡运行");
  12.                 }
  13.                 public void close(){
  14.                         System.out.println("网卡关闭");
  15.                 }
  16.                
  17.         }
  18.         class SoundCard implements PCI{
  19.                 public void open(){
  20.                         System.out.println("声卡运行");
  21.                 }
  22.                 public void close(){
  23.                         System.out.println("声卡关闭");
  24.                 }
  25.                
  26.         }
  27.         class MainBoard{
  28.                 public void run(){
  29.                         System.out.println("主板运行");
  30.                 }
  31.                 public void usePCI(PCI p){
  32.                         if(p != null)
  33.                         {
  34.                                 p.open();
  35.                                 p.close();
  36.                         }
  37.                 }
  38.         }

  39.         public static void main(String[] args) {
  40.                 MainBoard mb = new MainBoard();
  41.                 mb.run();
  42.                 mb.usePCI(new NetCard());
  43.                 mb.usePCI(new SoundCard());

  44.         }

  45. }
复制代码

大家帮看一下,MainBoard mb = new MainBoard(); 这句话为什么一直报错呢?
作者: 齐伟超    时间: 2015-8-28 08:31
应为main  方法是静态的   而你写的内部类不是静态的静态调用非静态当然报错   解决  讲内部内   MainBoard
SoundCard   NetCard   前面都加static
作者: 血马雄风    时间: 2015-8-28 09:35
main不是DuoTaiDemo5类的一部分,并且你的内部类不是嵌套类,所以就会报错
作者: 虫虫同学    时间: 2015-8-28 10:37
齐伟超 发表于 2015-8-28 08:31
应为main  方法是静态的   而你写的内部类不是静态的静态调用非静态当然报错   解决  讲内部内   MainBoard ...

对,解决了,谢了
作者: wrnlksblk    时间: 2015-8-28 12:49
不是静态不静态的问题,静态的方法内谁说不能通过创建对象再调用非静态方法,是楼主你外部类调用内部类的时候出现了问题,外部类调用内部类要这样写,DuoTaiDemo5.MainBoard mb = new DuoTaiDemo5().new MainBoard();




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