十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
具体实现是在类实现接口的时候由类来实现的,接口中只是包含方法的定义,在类中要把需要实现的接口的所有方法都实现。
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:空间域名、虚拟空间、营销软件、网站建设、德惠网站维护、网站推广。
如:
interface IMyInterface
{
void func();//在接口中只是声明,没有实现,也就是没有代码
}
在类中要有这样的方法:
void func()
{
//DoSomething 这个就是具体实现
}
抽象类就是用来做基类的,他的派生类实现抽象类的方法,这个和接口类似,但是抽象类只能单继承,而接口可以多继承。
接口只是声明的东西,实际并不分配内存,当在类中实现了接口定义的方法后才真正编译,占用内存。
public interface Parent(){
public void simpleCall();
}
public class Child_A implements Parent{
public void simpleCall(){
System.out.println("a---simpleCall");
}
}
public class Child_B implements Parent{
public void simpleCall(){
System.out.println("b---simpleCall");
}
}
child_a和child_b中的simpleCall可以实现不同的功能。。。多态,简单说其实就是一种功能的多种实现方式。或者理解为多种形态。
方法的实现是指可以在{}中写具体的Java代码,接口只能是以()结尾,
public
void
tree();//方法的定义
//方法的具体实现
public
void
tree(){
system.out.println("这是一颗松树");
}
举个面积的例子:在java中,定义一个接口,声明计算长方形面积和周长的抽象方法,再用一个类去实现这个接口,再编写一个测试类去使用这个接口。首先,接口必须单独存放,如果我们用eclipse编程的话,它们提示:The public type **** must be defined in its own file,意思是必须要定义在其自己的文件中,所以要为接口文件单独存放起来,举例,我们的接口要实现获到矩形的长,宽,面积,周长,所以定义以下的接口。public interface calrect {\x0d\x0apublic abstract int calarea();\x0d\x0apublic abstract int calgirth();\x0d\x0apublic abstract int getx();\x0d\x0apublic abstract int gety();\x0d\x0a}注意,定义接口就像定义类一样,接口的访问控制符只能用public,用public定义的接口可以被所有的类和包引用,而缺省的则只能被同一个包中的其他类和接口引用,这符合JAVA中访问控制符的一般要求,关于接口再引用其他接口则是后话。以上接口文件名为calrect.java.另外需要指出的是接口中不能给方法给出方法体。接下来,需要定义一个类来实现接口,因为不知道JAVA的内置矩形类是什么名,所以为了安全,将该类定义为RRect,这可以认为是一种安全策略。关于implements,可以参考其他资料。该类引用了接口calrect,所以必须对calrect中的方法一一实现。//定义矩形类 应用接口class RRect implements calrect{private int x;\x0d\x0aprivate int y;public RRect (){\x0d\x0a x=3;y=4;\x0d\x0a}\x0d\x0apublic int calarea(){\x0d\x0a return x*y;\x0d\x0a}\x0d\x0apublic int calgirth(){\x0d\x0a return x*2+y*2;\x0d\x0a}\x0d\x0apublic int getx(){\x0d\x0a return x;\x0d\x0a}\x0d\x0apublic int gety(){\x0d\x0a return y;\x0d\x0a}\x0d\x0a}//接下来,定义一个测试类,所谓测试类,我理解为定义一个类,在其定义类RRect的对象,并验证其中的方法,看看是不是可以正常使用//定义Class1类\x0d\x0apublic class Class1{\x0d\x0aRRect rect;\x0d\x0apublic static void main(String []args){\x0d\x0a RRect rect=new RRect();\x0d\x0a System.out.println("矩阵的长"+ rect.getx());\x0d\x0a System.out.println("矩阵的宽"+ rect.calarea());\x0d\x0a System.out.println("矩阵的面积"+ rect.calarea());\x0d\x0a System.out.println("矩形的周长 "+rect.calgirth());\x0d\x0a}\x0d\x0a\x0d\x0a}运行结果:矩阵的长3\x0d\x0a矩阵的宽12\x0d\x0a矩阵的面积12\x0d\x0a矩形的周长 14注:接口单存放,接口实现类和测试类可以存放在一个文件中
interface iShape2D //定义接口??
{
final double pi=3.14;
abstract void area();
}
class CRectangle implements iShape2D // 实现CRectangle类
{
int width,height;
public CRectangle(int w,int h){
width=w;
height=h;
}
public void area(){ // 定义area()的处理方式
System.out.println("area="+width*height);
}
}
class CCircle implements iShape2D // 实现CCircle类
{
double radius;
public CCircle(double r){
radius=r;
}
public void area(){ // 定义area()的处理方式
System.out.println("area="+pi*radius*radius);
}
}
public class app10_4
{
public static void main(String args[])
{
CRectangle rect=new CRectangle(5,10);
rect.area(); //调用CRectangle类里的area() method
CCircle cir=new CCircle(2.0);
cir.area(); // 调用CCircl类里的area() method
}
}
// app10_5,通过接口类型的变量来访问对象
class app10_5
{
public static void main(String args[])
{
iShape2D var1,var2; // ?派?明接口类型的变量
var1=new CRectangle(5,10); // 将接口类型的变量var1指向新建的对象
var1.area(); // 通过接口var1调用show() method
var2=new CCircle(2.0); // 将接口类型的变量var2指向新建的对象
var2.area(); // 通过接口var2调用show() method
}
}
// app10_6, 实现两个以上的接口??
interface iShape2D // 定义iShape2D接口
{
final double pi=3.14;
abstract void area();
}
interface iColor // 定义iColor接口
{
abstract void setColor(String str);
}
class CCircle implements iShape2D,iColor // 实现iShape2D与iColor接口
{
double radius;
String color;
public CCircle(double r){
radius=r;
}
public void setColor(String str){ // 定义iColor接口里的setColor()
color=str;
System.out.println("color="+color);
}
public void area(){ // 定义iShape2D接口里的area() method
System.out.println("area="+pi*radius*radius);
}
}
public class app10_6
{
public static void main(String args[])
{
CCircle cir;
cir=new CCircle(2.0);
cir.setColor("Blue"); // 调用CCircl类里的setColor() method
cir.area(); // 调用CCircl类里的show() method
}
}
首先,需要了解一下java关于类继承和接口实现的基础理论知识,如下:
类继承:继承是面向对象最显著的一个特性。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。Java继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。
接口实现:接口实现在java中是一种特殊继承方式,接口在定义后,就可以在类中实现该接口。在类中实现接口可以使用关键字implements,其基本格式如下:
[修饰符] class 类名 [implements 接口列表]{
}
然后,需要创建父类和定义接口,如下:
创建父类:
class Bird {
int legnum = 2;
void egg() {
};
}
定义接口:
interface Flyanimal{
void fly();
}
最后,可以创建一个类来继承上面的父类和实现上面的接口,如下:
class Pigeon extends Bird implements Flyanimal {
public void fly(){
System.out.println("pigeon can fly");
}
public void egg(){
System.out.println("pigeon can lay eggs ");
}
}