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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Friends★ 中级黑马   /  2012-4-24 21:25  /  2959 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

接口中的方法是不是一定是抽象的?
如果一定是抽象的,方法前面是不是要加上abstract ?
还有就是接口中的方法是不是一定要被public修饰?

12 个回复

倒序浏览
接口中的方法是不是一定是抽象的?   是的
如果一定是抽象的,方法前面是不是要加上abstract ?  不用加
还有就是接口中的方法是不是一定要被public修饰?  是的
回复 使用道具 举报
褚代江 发表于 2012-4-24 21:31
接口中的方法是不是一定是抽象的?   是的
如果一定是抽象的,方法前面是不是要加上abstract ?  不用加
还 ...

可是我今天写了一段代码,不加public修饰也没事。我把那个代码发给你,你帮我看看呗?
回复 使用道具 举报
是的 如果接口中的方法不是抽象的 那接口就变成抽象类了   
抽象类的特点:
1,抽象方法一定在抽象类中。
2,抽象方法和抽象类都必须被abstract关键字修饰。
3,抽象类不可以用new创建对象。因为调用抽象方法没意义。
4,抽象类中的抽象方法要被使用,必须由子类复写起所有的抽象方法后,建立子类对象调用。
如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类。
抽象类比一般类多个了抽象函数。就是在类中可以定义抽象方法。
抽象类不可以实例化。
     接口定义时,格式特点:
1,接口中常见定义:常量,抽象方法。
2,接口中的成员都有固定修饰符。
        常量:public static final
        方法:public abstract
记住:接口中的成员都是public的。
回复 使用道具 举报
abstract方法必须在abstract类中。
接口不是类,接口的所有方法都是抽象的。
接口是抽象类,必须是!只是接口中的方法 必须是抽象方法(没有方法体),而抽象类中,可以有抽象方法,也可以不是抽象方法(有方法体),一定要被public所修饰
回复 使用道具 举报
本帖最后由 欧阳梦南 于 2012-4-24 21:47 编辑

接口中的方法一定是抽象的,抽象类中的方法不一定。
在接口类中不用加abstract,此时也是被加了的。
接口类中的方法默认都是public方法
回复 使用道具 举报
接口是属于抽象的,而且接口语义上类似于类,只是它缺乏实例变量,它的方法不需要任何方法体就可以声明。
所以接口中的方法是抽象的,而且方法前面也不用加上abstract 。
接口中的方法可以被声明为public或不声明,但结果都会按照public类型处理
回复 使用道具 举报
Friends★ 发表于 2012-4-24 21:39
可是我今天写了一段代码,不加public修饰也没事。我把那个代码发给你,你帮我看看呗? ...

发来瞅瞅
回复 使用道具 举报
金超 中级黑马 2012-4-24 21:49:47
9#
如果一个抽象类中的所有方法都是抽象的,就可以将这个类用另外一种方式来定义,也就是接口定义。
接口是抽象方法和常量值的定义的集合,从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现
可以使用extends来继承接口的常量和抽象方法,但它与类中的extends不同,它可以继承有多个父接口(多重继承),各父接口间用逗号隔开。
接口中的所有常量必须是public static final,方法必须是public abstract,这是系统默认的,不管你在定义接口时,写不写修饰符都是一样的
定义接口
修饰符 interface 接口名 [extends 父接口列表]
{
常量域声明
抽象方法声明
}
class cat implements Animal
{
public void shout ()
{
System.out.print(“喵喵”);
}
}
实现接口
implements
一个类可以实现若干个接口
非抽象类必须实现所有的抽象方法
interface prt
{
public void prtln();
}
class A implements prt{
int a = 3;
public void prtln()
{
//输出a;
}
}
class B implements prt{
int b = 4;
public void prtln()
{
//输出b;
}
}
public class MyInterfaceDemo
{
public static void dost(prt c)
{
c.prtln();
}
public static void main(String[] args)
{
A a1 = new A();
B b1 = new B();
MyInterfaceDemo.dost(a1);
MyInterfaceDemo.dost(b1);
}
}
回复 使用道具 举报
赵嘉男 发表于 2012-4-24 21:41
abstract方法必须在abstract类中。
接口不是类,接口的所有方法都是抽象的。
接口是抽象类,必须是!只是 ...

可是我今天写了一段代码,不加public修饰也没事。我把那个代码发给你,你帮我看看呗?

class NoValusException  extends  RuntimeException{
        NoValusException(String message){
                super(message);
        }
}

interface Share{
           void  getArea();//  这边不是没有被public修饰嘛,难道默认的情况下就是被public修饰?
}
class  Rec  implements  Share{
        private int Len,Wid;
        Rec(int Len,int Wid){
                if(Len  <0  ||Wid<0)
                        throw  new NoValusException("feifazhi");
                this.Len=Len;
                this.Wid=Wid;
        }
       
        public void getArea() {
                System.out.println(Len*Wid);
               
        }
}



class Test7{
       
        public static void main(String[] args) {
               
                        Rec c=new Rec(4, 3);
                        c.getArea();
                       
        }
}
回复 使用道具 举报
褚代江 发表于 2012-4-24 21:47
发来瞅瞅

谢谢哦,我明白了,默认情况就是被public修饰。
回复 使用道具 举报
孙天 黑马帝 2012-4-24 23:41:51
12#
接口中的方法一定是抽象的,它是全局常量public static final,抽象方法public abstract,接口中的成员都是public,你可以不加,因为是默认的,不加系统会自动给你加上
回复 使用道具 举报
接口中的方法默认为public的,还有接口中的方法默认是抽象的,所以我们一般情况下在接口中写方法的时候一般是不写修饰符和abstract的,我们一般只写返回类型,方法名和参数类型等等
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马