接口的使用:
接口定义好后,如何使用这些接口呢?只要在类的声明语句中使用关键字implements,声明该类实现了某个或多个接口,同时要在类中实现接口中定义的所有方法。具体格式如下:
[类修饰符]class类名 implements多个接口
{
实现接口中的方法
}
在类体中实现接口中的方法必须是公有public方法,如果不加public,程序会出错。我们对上面定义的接口写出具体的实现,程序如下:
Class A implements Son
{
public void fn1()
{
System.out.println(“fn1 ok”);
}
public void fn2(){
}
Public void fn3()
{
}
public void fn5()
{}
Public void fn4()
{}
}
接口的用法:定义一个接口图形类,派出3个子类:三角形类,矩形类,圆形类,求面积.。
package com.extend;
public class Test1{
public static void main(String []args){
Recte rect=new Recte(3,4);
rect,area();
Anglex ang=newAnglex(3,4);
ang,area()
Circlex cir=new Circlex(5)
Cir,area();
}
}
Interface Shape{
public final double PI=3.1415;
public abstract void area();
}
class Recte implements Shape{
private int1.w;
Recte(int a1,int b1){
this.1=a1
this.w=b1
}
public void area(){
double s;
s=1*w;
System.out.println(“矩形的面积为:”+s);
}
}
class Anglex implements Shape{
private int 1,h
Anglex(int11,int h1){
this.1=11;
this.h=h1;
}
Public void area(){
double s;
s=0.5*1*h;
System.out.println(三角形的面积为:”+s);
}
}
class Circlex implements Shape{
private int r;
Circlex(int r1){
this.r=r1;
}
public void area(){
double s;
s=PI*r*r;
System.out.println(“圆形的面积为:”+s);
}
}
ps:继承抽象类:优势为抽象类中方法不需要全部实现,缺陷为单继承系。
实现接口:缺陷为接口中的方法必须全部实现,优势为多继承系。
在我们写程序的时候,可以将接口保存成一个文件,类保存成一个文件。
内部类和匿名类:
简单地说,内部(inner)类是指那些定义代码被置于其他定义中的类;而对于一般的类定义代码不嵌套在其他类定义中的类,称为顶层(top-level)类。对于一个内部类来讲,包含其定义代码的类称为它的外部(outer)类。
匿名类,顾名思义就是没有名字的类。并不是所有的类都可以是匿名类,只有内部类才可以是匿名类。也就是说,我们在定义内部类时,可以不给内部类起名字,称为匿名内部类,简称匿名类。
内部类:
在一个类的内部定义另外一个类,这个类就叫做内部类(inner class)。内部类的定义和普通类的定义没什么区别,它可以直接访问和引用它的外部类的所有变量和方法(包括private),就像外部类中的其他非static成员的功能一样。区别是,外部类只能声明为public和default,而内部类可以声明为private和protected。
当我们建立一个内部类时,其对象就拥有了与外部类对象之间的一种关系,当内部类的成员方法访问某个变量/方法时,如果在该方法和和内部类中都没有定义过这个变量,词用就会被传递给内部类中保存的那个外部类对象的引用,通过那个外部类对象的引用去调用这个变量。
内部类:
public class Test2{
public static void main(String []args){
//Inner in=new Inner();错误
Outer out=new Outer();
Out.outMethod();
}
}
Class Outer
{
int s=10;
void outMethod()
{
Inner i=new Inner();;
i.inMethod();
}
class Inner
{
int t;
void inMethod()
{
t=20;
s++;
System.out.println(s+t);
}
}
}
在该程序中,在类Outer的内部包含了类Inner的定义,这时Outer类称为外部类,Inner类称为内部类。在外部类Outer的里面,可以对内部类进行任何访问,在outMethod()方法中就创建了内部类的对象,调用了内部类中的inMethod()方法。在内部类中,可以访问在外部类中定义的各种成员,例如在inMethod()方法中使用了外部类中定义的成员变量s。而在类的外部,主类中,不能对内部类直接进行访问,“Inner in=new Inner();”这条语句是错误的。我们只能创建Outer类的对象,通过外部类的成员方法对内部类进行操作。