欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java接口与抽象类

程序员文章站 2022-03-25 19:05:48
本片随笔讲讲java中接口与抽象类。 一,接口 1、什么是接口? 那在日常生活中接口是什么呢?就是两个对象之间进行连接的部分就是接口,就比如热水器与水管的接口一样,他可以确保不同的东西之间的顺利连接,就如不同的热水器厂家和水管厂家只要按照接口的标准来进行生产。那么热水器和水管就可以顺利连接了。而在j ......

本片随笔讲讲java中接口与抽象类。

 

一,接口

1、什么是接口?

  那在日常生活中接口是什么呢?就是两个对象之间进行连接的部分就是接口,就比如热水器与水管的接口一样,他可以确保不同的东西之间的顺利连接,就如不同的热水器厂家和水管厂家只要按照接口的标准来进行生产。那么热水器和水管就可以顺利连接了。而在java领域中接口是抽象类的一种,只包含常量和方法是定义,而没有变量和方法的实现,且其方法都是抽象方法。

1.1、具体表现:1、通过接口实现列的相同行为,不用考虑类之间的关系。

         2、通过接口指明需要实现的方法。

2、接口的语法声明:

  xxx.java文件

package pkg2;

//定义类的接口,public后面加interface 
public interface xxx{    
     //方法  抽象方法必须是没有方法体,而不是方法体内没有代码。如下
      public int a();
}

  xxxlmpl.java文件

1 package pkg2;
2 
3     //xxxlmpl.java文件名  连接   xxx.java文件名
4 public class xxxlmpl implements xxx{
5     
6 } 

3.接口用法:用一道题目来讲解接口的用法,计算圆的周长,面积和体积。

 第一步:我们先来写一个接口类的文件:circle.java文件。

 1 package pkg8;
 2 
 3 public interface circle{
 4     
 5 //定义一个方法 类型用float 类接口不需要方法体 所以直接用分号。    
 6     //周长
 7         public float getcircumference();
 8     //面积
 9     public float getarea();
10     //体积
11     public float getvolumecube();
12 }    

 再写一个接口的实现类:circlelmpl.java文件。

 1 package pkg8;
 2 
 3 public class circleimp2 implements circle2{
 4     //定义用于表示圆周率的常量pi  
 5     private static final float pi = 3.14f;
 6     
 7     //定义用于表示圆的半径
 8     private float radius;
 9     
10     //构造方法用于传递参数。    
11     public circleimp2(float radius){
12         this.radius = radius; 
13     }
14     
15     //把接口类的需要求的周长,面积,体积实现 如果下:
16         //周长
17     public float getcircumference(){
18         //实现的代码
19         return 2 * pi * radius;
20     }
21         //面积
22     public float getarea(){
23         //实现的代码
24         return pi * radius * radius;
25     }
26         //体积
27     public float getvolumecube(){
28         //实现的代码
29         return 4/3 * radius * radius * radius;
30     }    
31 }   

提示:implements 接口列表:可选参数,用于指定该类实现的是哪些接口。当使用implements关键字时,接口列表为必选参数。当接口列表中存在多个接口名时,各个接口名之间使用逗号分隔。

最后来一个测试类:test.java文件

package pkg8;

public class test2{
    
    public static void main(string args[]){
                //写了构造方法,所以直接把值传过来即可。
                //求半径为8.3的圆的周长,面积,体积。
        circle2 circle = new circleimp2(8.3f);
        
        system.out.println("周长是:"+circle.getcircumference()+" cm");
        system.out.println("面积是:"+circle.getarea()+ " cm^2");
        system.out.println("体积是:"+circle.getvolumecube()+ " cm^3");
    }
    
}    

 运行结果:

java接口与抽象类

4、final关键字

上面代码中 出现了一个final关键字,那final关键字有上面作用呢

java接口与抽象类

 

 

final关键字的作用代表的是不可变的,最终的意思,他可以修饰类,类的成员变量和成员方法。但是final作用不同

1、fina修饰成员变量:则成为常量  如:final double count;

2、final修饰成员方法:则该方法吧被子类重写。

3、final修饰类,则类是不能被继承的 如:

public final class name{
         .....      
}

 

 总结:

  final关键字的用法共有四种:

  1. 用来修饰数据,包括成员变量和局部变量,该变量只能被赋值一次且它的值无法被改变。对于成员变量来讲,我们必须在声明时或者构造方法中对它赋值。
  2. 用来修饰方法参数,表示在变量的生存期中它的值不能被改变;
  3. 修饰方法,表示该方法无法被重写;
  4. 修饰类,表示该类无法被继承。

二、抽象类

抽象类的特点:

   1、最大的特点就是模糊的。为什么说是模糊的呢?因为抽象类是不具体的,现实不存在的东西。

   2、抽象方法 必须要有抽象类   (但抽象类中可以没有抽象方法)   否则程序会报错。例如:

package pkg9;
public class 周末{
    public void 逛街(){
        
    }
    public void 看电影(){
        
    }    
    //抽象类
    public abstract void 结婚();
}   

这里定义了一个周末的类  在里面有一个3个方法其中一个是抽象方法。

运行结果:

java接口与抽象类

 

定义一个抽象类:

 

java接口与抽象类

   3、继承了抽象类,必须实现抽象类的所有抽象方法。

   4、抽象类也可以继承抽象类,这样不需要实现父抽象类的方法。

接口和抽象类有什么区别?

     1、接口中的所有方法都不需要实现(不允许有任何代码)。抽象类有些方法实现,有些方法没有实现。

     2、接口里只能包含抽象方法,静态方法和默认方法,不能为普通方法提供方法实现,抽象类则可以包含普通方法。

     相关链接: