实例变量被认为是缺少方​​法

时间:2016-04-13 14:10:51

标签: java

所以我的目标是为pagesRead()实例变量和typeHomework实例变量创建一个方法,但是当我尝试这个时,我得到一个错误,说他们缺少方法或声明抽象。如果有人可以帮我解决这个问题,或者把我发给另一个类似的问题,那就太好了,谢谢。

public abstract class homework {
    public int pagesRead();
    public String typeHomework();
    public abstract void createAssignment(int p) {
        return null;
    }
}

5 个答案:

答案 0 :(得分:2)

您正在寻找的应该是:

public abstract class homework {
    abstract int pagesRead();

    abstract String typeHomework();

    public void createAssignment(int p) {
        //
    }
}

你颠倒了一切。

答案 1 :(得分:1)

试试这个:

public abstract class homework
{
   public abstract int pagesRead();//abstract
   public abstract String typeHomework();//abstract
   public abstract void createAssignment(int p);//since it is an abstract you can't create a body
}

答案 2 :(得分:0)

首先,抽象方法无法实现。

您的代码应为

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWndEx)
   ON_WM_CREATE()
   ON_WM_CLOSE()
   ON_COMMAND(ID_SLIDER, OnSlider)
   ON_COMMAND(ID_VIEW_CUSTOMIZE, OnViewCustomize)
   ON_REGISTERED_MESSAGE(AFX_WM_RESETTOOLBAR, OnToolbarReset)
   ON_REGISTERED_MESSAGE(AFX_WM_TOOLBARMENU, OnToolbarContextMenu)
   ON_UPDATE_COMMAND_UI_RANGE(ID_LAYERS_1, ID_LAYERS_3, OnUpdateLayers)
   ON_COMMAND_RANGE(ID_LAYERS_1, ID_LAYERS_3, OnLayers)
END_MESSAGE_MAP()

CMFCToolBarMenuButton* CreateLayerButton()
{
   CMenu menu;
   VERIFY(menu.LoadMenu(IDR_LAYERS));

   CMFCToolBarMenuButton* pLayerButton = NULL;
   CMenu* pPopup = menu.GetSubMenu(0);
   ASSERT(pPopup != NULL);
   if (pPopup != NULL)
   {
      HMENU hMenu = pPopup->GetSafeHmenu();
      pLayerButton = new CMFCToolBarMenuButton(ID_LAYERS_1, hMenu, -1, NULL, FALSE);
   }

   return pLayerButton;
}

afx_msg LRESULT CMainFrame::OnToolbarReset(WPARAM wp, LPARAM)
{
   UINT uiToolBarId = (UINT)wp;
   if (uiToolBarId == IDR_MAINFRAME)
   {
      CSliderButton btnSlider(ID_SLIDER);
      btnSlider.SetRange(0, 100);
      m_wndToolBar.ReplaceButton(ID_SLIDER, btnSlider);

      // layer button/menu
      CMFCToolBarMenuButton* pLayerButton = CreateLayerButton();
      m_wndToolBar.ReplaceButton(ID_LAYERS_1, *pLayerButton);
      delete pLayerButton;
   }

   return 0;
}

void CMainFrame::OnUpdateLayers(CCmdUI* pCmdUI)
{
   //pCmdUI->SetCheck(true);
}

void CMainFrame::OnLayers(UINT id)
{
}

答案 3 :(得分:0)

你的意思是创建班级成员吗?那就是pagesRead和typeHomework应该是类Homework的元素而不是方法?如果是这样,那么以下是正确的方法

    public class Homework{ 
        public int pagesRead;
        public String typeHomework;
        public void createAssignment(int p)
              { return null; }
}

答案 4 :(得分:0)

您在抽象类中声明的内容是相反的。     1)声明非抽象方法     2)给出抽象方法的实现

You should 
1) Declared abstract methods 
2) given implementation for non abstract methods