小弟初学java,关于接口小弟有点不明,定义一个接口,一个接口类interface b,一个实现类class a implements b为什么要单独定义一个interface的文件,感觉这个文件定义的东西有点多余,如果某个class X要使用这个接口, 直接class x implements b,并且方法还要重写。
如果定义一个接口,实现类,如果需要此实现类的方法时,直接new 一个实现类的对象出来。这样使用感觉interface的这个文件时多余的
如果定义一个接口,实现类,如果需要此实现类的方法时,直接new 一个实现类的对象出来。这样使用感觉interface的这个文件时多余的
我来个通俗点例子吧
房间里面有个电源插座(规定:提供电压220v、频率50Hz),你要是要使用这个插座,就必须满足这个条件。
并且这个电源插座可以提供给多种电器。
这就是接口。呵呵
不晓得楼主是否明白点。。
1.通过接口,可以把一个类的某些方法,而不是所有方法,提供给类的用户使用
2.利用接口类型的参数,强制类去实现某种行为
3.接口类型的多态 关于接口的作用第一点,请看下面这个雇员的例子,其中定义了修改个人信息和计算薪水的方法 public abstract class Employee implements Payable, EmployeeInfo
{
private String name;
private double weeklyPay;
//构造器
public Employee(String name, String address)
{
this.name = name;
this.address = address;
} //跟个人信息由关的方法
public String getName()
{
return name;
}
public void setName(String n)
{
name = n;
} //跟薪水有关的方法
public double getWeeklyPay()
{
return weeklyPay;
}
public void computePay(int hoursWorked)
{
weeklyPay = hoursWorked * 6.50;
System.out.println("Weekly pay for " + name + " is $" + weeklyPay);
}
}//Payable接口只提供跟薪水有关的方法
interface Payable
{
public void computePay(int hoursWorked);
public double getWeeklyPay();
}//EmployeeInfo接口只提供跟个人信息有关的方法
interface EmployeeInfo
{
public String getName();
public void setName(String n);
}//如果写一个会计的类,其中的方法把Payable作为参数,会计就只能使用跟薪水有关的方法,而不能修改Employee的个人信息
class Payroll
{
public void payEmployee(Payable p)
{
p.computePay(40);
} public void printPaycheck(Payable p)
{
System.out.println("Printing check for $" + p.getWeeklyPay());
}
}//如果再写一个HR的类,其中的方法的参数为EmployeeInfo,那么HR就只能使用跟员工个人信息有关的方法,而不能看到薪水等
class HumanResources
{
public String getInfo(EmployeeInfo e)
{
return e.getName() + " " + e.getAddress();
} public void changeName(EmployeeInfo e, String name)
{
System.out.println("Changing name for " + e.getName());
e.setName(name);
System.out.println("New name is " + e.getName());
}
}
//这样一来,通过接口,Employee类就可以提供部分方法给该类的用户使用,而不会暴露其他的方法,这个是接口的作用之一