java接口与内部类

      java接口是是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。

      接口实现和类继承的规则不同,为了数据的安全,继承时一个类只有一个直接父类,也就是单继承,但是一个类可以实现多个接口,接口弥补了类的不能多继承缺点,继承和接口的双重设计既保持了类的数据安全也变相实现了多继承。java采用关键字interface创建一个接口。接口就是告诉程序需要做什么只不过这些方法都没实现,没有函数体。首先还是来看几个程序。

interface information
{
    void setTeacherName(String schoolname);
    void setCode(String code);
    void setSexy(String sexy);
    void setBirthday(String birthday);
    void setFamilyAddress(String familyaddress);
    String getTeacherName();
    String getCode();
    String getSexy();
    String getBirthday(); 
    String getFamilyAddress();
}

      以上就是实现了一个接口,是关于老师的信息接口,包括姓名、号码、生日、地址、性别信息。下面就只需要去用教师类去实现接口就好了。使用关键字implements实现。继续看下面代码。

class teacher implements information 
{

    private String teachername;
    private String teachercode;
    private String teachersexy;
    private String teacherbirthday;
    private String familyaddress;
    public void setname(String teachername)
    {
        this.teachername=teachername;
    }
    public void setcode(String teachercode)
    {
        this.teachercode=teachercode;
    }
    public void setsexy(String teachersexy)
    {
        this.teachersexy=teachersexy;
    }
    public void setbirthday(String teacherbirthday)
    {
        this.teacherbirthday=teacherbirthday;
    }
    public void setfamilyaddress(String familyaddress)
    {
        this.familyaddress=familyaddress;
    }

    public String getcode()
    {
        return teachercode;
    }
    public String getsexy()
    {
        return teachersexy;
    }
    public String getbirthday()
    {
        return teacherbirthday;
    }
    public String getfamilyaddress()
    {
        return familyaddress;
    }
    public String tostring()
    {
        String infor=" 教师姓名:"+teachername+"  "+"教师工号:"+teachercode+"  "+"性别:"+teachersexy+"  "+"出生年月:"+teacherbirthday+"  "+"家庭地址:"+familyaddress;
        return infor;
    }
}

      上述程序段实现了老师信息接口,并实现了接口里面的方法体。之后需要做的工作就是在主运行方法里面进行使用teacher类了。、information接口可以被不同的类进行实现,也可以是学生类,但是不管是哪一个类实现该接口,都需要实现该接口里面的全部方法体。(子类是抽象类这种情况除外)。

一个类可以同时实现多个接口,一个接口也可以同时被多个类实现。接口之间也可以有继承关系

interface schooInfor
{
    void setschoolname(String schoolname);
    void setclassname(String schoolclassname);
    String getschoolname();
    String getclassname();
}
interface schooInforAdd extends schooInfor 
{
    void setname(String name);
    void setcode(String code);
    void setsexy(String sexy);
    void setbirthday(String birthday);
    void setfamilyaddress(String familyaddress);
    String getname();
    String getcode();
    String getsexy();
    String getbirthday();
    String getfamilyaddress();
}

一个接口可以被多个类实现:

class student implements schooInfor 
class teacher implements schooInfor

一个类实现多个接口

class teacher implements schoolinfor1,schoolinfor2 

关于java内部类

      java内部类分为: 成员内部类、静态嵌套类、方法内部类、匿名内部类 。内部类仍然是一个独立的类,在编译之后内部类会被编译成独立的.class文件,但是前面冠以外部类的类名和$符号 ;内部类不能用普通的方式访问。内部类是外部类的一个成员,因此内部类可以自由地访问外部类的成员变量,无论是否是private的 ;内部类声明成静态的,就不能随便的访问外部类的成员变量了,此时内部类只能访问外部类的静态成员变量 。(参考百度百科)

class Outer {
    class Inner{}
}

编译上述代码会产生两个文件:Outer.class和Outer$Inner.class。

public class InnerClasses
{
    private static String staticAttribute = "Outter class'     static attribute";
    private String instantiateAttribute = "Outter class' instantiate attribute";

    public void instantiateMethod()
    {
        System.out.println("Outter class' intantiate method");
    }   
    public static void staticMethod()
    {
        System.out.println("Outter class' static method");
    }
    public static class StaticInnerClass
    {
        public StaticInnerClass()
        {
            System.out.println("static Inner class");
        }
        public void access()
        {
            System.out.println(staticAttribute);
            staticMethod();
        }
    }

为什么要使用内部类?

       典型的情况是,内部类继承自某个类或实现某个接口,内部类的代码操作创建其他外围类的对象。所以你可以认为内部类提供了某种进入其外围类的窗口。使用内部类最吸引人的原因是:每个内部类都能独立地继承自一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对于内部类都没有影响。如果没有内部类提供的可以继承多个具体的或抽象的类的能力,一些设计与编程问题就很难解决。从这个角度看,内部类使得多重继承的解决方案变得完整。接口解决了部分问题,而内部类有效地实现了“多重继承”。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值