JAVA中,接口和抽象类的区别

1 篇文章 0 订阅
1 篇文章 0 订阅

一,Java抽象类是指没有方法主体的方法声明,需要使用abstract关键字来声明。抽象类主要被子类继承的。子类继承抽象类,就可以根据实际的情况来实现抽象类中声明的抽象方法。
二,java中,是通过interface关键字来定义接口的,接口中声明的方法都没有方法体,都是public类型的。类的定义采用implements关键字来实现接口的。
三,接口和抽象类的区别
1, 抽象类可以提供某些方法的部分实现,但是接口不可以的。不可以在接口内提供实现细节。
2,抽象类里面可以有普通的成员变量(就是不加abstract关键字的),但是接口里面不能有普通的成员变量的。
3,抽象类中抽象方法的访问类型可以是public ,protected和默认类型的,但是接口中的抽象方法只能是public类型的,默认为public abstract类型的
4,抽象类中,可以包含静态方法,但是接口是不可以的。
5,抽象类中的静态成员变量的访问类型可以任意的,但是接口的变量只能是public static final的。
6,一个最重要的,就是一个类可以实现多个接口,但是一个类只能继承一个抽象类的。
7,接口更多应用在系统框架设计方法上,主要定义模块之间的通信。抽象类在代码实现方面发挥作用,可以实现代码的重用

下面看一下抽象类和接口的JAVA程序:
抽象类:
Circle.java

package com.duotai1.java;

public class Circle extends Shape
{
    public Circle(int r)
   {
     this.r=r;
    }
    public void zhouchang()
    {
      zc=2*Math.PI*this.r;
      System.out.println("圆的周长: "+zc);
     }
    public void mianji()
    {
       mj=Math.PI*this.r*this.r;
       System.out.println("圆的面积为: "+mj);
    }
   private int r;
   private double zc;
   private double mj;

}

Shape.java

package com.duotai1.java;

public abstract class Shape


{
   public abstract void zhouchang();
   public abstract void mianji();
}

Rectangle.java

package com.duotai1.java;

public class Rectangle extends Shape
{
    public Rectangle(int a,int b)
   {
    this.a=a;
    this.b=b;
    }
    public void zhouchang()
    {
      sum=2*(this.a+this.b);
      System.out.println("矩形的周长为: "+sum);
    }
    public void mianji()
    {
       mj=this.a*this.b;
      System.out.println("矩形的面积为: "+mj);
    }

    private int a;
    private int b;
    private int sum;
    private int mj;

}

Test.java

package com.duotai1.java;

//import java.awt.Rectangle;

public class Test
{
   public static void main(String [] args)
   {
      /* Rectangle s=new Rectangle(3,4);
       s.zhouchang();
       s.mianji();
     */

       Shape s1=new Rectangle(3,4);
       s1.zhouchang();
       s1.mianji();

       System.out.println("-----------------------");

       Shape s2=new Circle(5);
       s2.zhouchang();
       s2.mianji();


    }
}

接口JAVA程序
G3Phone.java

package com.interface2.java;

public interface G3Phone {
    public void onLine();
    public void videoCall();
    public void playOnlineGames();
    public void payment();


}

PocketPC.java

package com.interface2.java;

public interface PocketPC {

    public void installProgram();
    public void runProgram();
    public void uninstallProgram();


}

XiaoMiPC.java

package com.interface2.java;

public class XiaoMiPC implements G3Phone, PocketPC {

    @Override
    public void installProgram() {
        // TODO Auto-generated method stub
        System.out.println("可以按照程序。");

    }

    @Override
    public void runProgram() {
        // TODO Auto-generated method stub
        System.out.println("可以运行程序");

    }


    @Override
    public void uninstallProgram() {
        // TODO Auto-generated method stub
       System.out.println("可以卸载程序");
    }

    @Override
    public void onLine() {
        // TODO Auto-generated method stub
      System.out.println("可以上网");
    }

    @Override
    public void videoCall() {
        // TODO Auto-generated method stub
        System.out.println("可以视屏通话");

    }

    @Override
    public void playOnlineGames() {
        // TODO Auto-generated method stub
       System.out.println("可以玩网游");
    }

    @Override
    public void payment() {
        // TODO Auto-generated method stub
        System.out.println("可以移动付账");

    }

}

Test.java

package com.interface2.java;

public class Test {
    public static void main(String [] args)
    {
        /*G3Phone g=new XiaoMiPC();
        g.onLine();
        g.videoCall();
        g.payment();
        g.playOnlineGames();


        PocketPC p=new XiaoMiPC();
        p.installProgram();
        p.runProgram();
        p.uninstallProgram();
        */
        G3Phone g=new XiaoMiPC();
        //PocketPC p=new PocketPC();
        Test t=new Test();
        t.in(g);
        PocketPC p=new XiaoMiPC();
        //PocketPC P=new PocketPC();
        //t.in1(new PocketPC());
        //p.in1(p);
        t.in1(p);

    }
    public void in(G3Phone g)
    {
        g.onLine();
        g.videoCall();
        g.playOnlineGames();
        g.payment();

    }
    public void in1(PocketPC p)
    {
        p.installProgram();
        p.runProgram();
        p.uninstallProgram();

    }


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值