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

一,接口

1、什么是接口?

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

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

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

2、接口的语法声明:

  Xxx.java文件

package pkg2;

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

  Xxxlmpl.java文件

 package pkg2;

     //Xxxlmpl.java文件名  连接   Xxx.java文件名
 public class Xxxlmpl implements Xxx{

 } 

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

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

 package pkg8;

 public interface Circle{

 //定义一个方法 类型用float 类接口不需要方法体 所以直接用分号。
     //周长
         public float getCircumference();
     //面积
     public float getArea();
     //体积
     public float getVolumeCube();
 }    

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

 package pkg8;

 public class CircleImp2 implements Circle2{
     //定义用于表示圆周率的常量PI
     private static final float PI = 3.14f;

     //定义用于表示圆的半径
     private float radius;

     //构造方法用于传递参数。
     public CircleImp2(float radius){
         this.radius = radius;
     }

     //把接口类的需要求的周长,面积,体积实现 如果下:
         //周长
     public float getCircumference(){
         //实现的代码
         return 2 * PI * radius;
     }
         //面积
     public float getArea(){
         //实现的代码
         return PI * radius * radius;
     }
         //体积
     public float getVolumeCube(){
         //实现的代码
         return 4/3 * radius * radius * radius;
     }
 }   

提示: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");
    }

}    

运行结果:

4、final关键字

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

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个方法其中一个是抽象方法。

运行结果:

定义一个抽象类:

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

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

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

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

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

     相关链接:https://juejin.im/post/57ce3612816dfa0054189a13

java接口与抽象类的更多相关文章

  1. java 接口和抽象类的区别

    java 接口和抽象类的区别抽象类:1.含有抽象方法的类一定为抽象类,反过来抽象类,不一定含有抽象方法:2.抽象类必须用abstract来进行定义,抽象方法也必须用abstract来进行定义:3.抽象 ...

  2. 初探设计:Java接口和抽象类何时用?怎么用?

    今天犯了个错: “接口变动,伤筋动骨,除非你确定只有你一个人在用”.哪怕只是throw了一个新的Exception.哈哈,这是我犯的错误. 一.接口和抽象类 类,即一个对象. 先抽象类,就是抽象出类的 ...

  3. Java接口和抽象类有什么区别,哪些时候用接口,哪些时候用抽象类?

    Java接口和抽象类有什么区别,哪些时候用接口,哪些时候用抽象类? 2013-01-05 17:16:09|  分类: JAVA |  标签:java  |举报|字号 订阅     下面比较一下两者的 ...

  4. Java接口和抽象类的区别

    今天看到项目中,写了一个抽象类,里面有很多方法继承了这类,当调用这个接口时,采用的是这个抽象类去调方法的,当时一想,这个不就是我们说的Java的多态的特征: 继承:存在继承关系的子类和父类 重写:子类 ...

  5. java接口和抽象类

    关于接口 1.创建一个接口,需要使用interface关键字. 2.实现一个接口,需要使用implements关键字. 3.接口的成员属性都是静态常量(默认public static final). ...

  6. java接口与抽象类的区别

    接口可以是标志接口,里面没有任何常量和方法. 抽象类不一定必须有抽象方法,也可也没有方法,但含抽象方法的类必须被声明为抽象类. 在抽象层次结构中,Java接口在最上面,然后紧跟着抽象类,然后是一般类. ...

  7. Java接口和抽象类的实现方法

    一.java中的接口本质上是加约束的抽象类 //抽象类 public abstract class AExample { public abstract int add(int x,int y); p ...

  8. Java 接口和抽象类差别

    原文:http://blog.csdn.net/sunboard/article/details/3831823 1.概述 一个软件设计的好坏,我想非常大程度上取决于它的总体架构,而这个总体架构事实上 ...

  9. Java接口和抽象类的理解

    接口和抽象类的相同之处就是 都会有抽象方法 抽象方法就是一个没有方法体 等待继承的子类完成的方法 然而接口比较严格 它的方法必须是抽象方法且是公开的 抽象类 可以有自己的属性 和 实体方法 首相用面向 ...

随机推荐

  1. VM虚拟机链接克隆及linux eth0网卡的快速设置方法

    对于后台开发者来说,在学习过程中必然接触众多中间件,在自己的虚拟机进行操作甚至搭建cluster是很常见的事情. 我在初学者时摸索出一套快速的克隆虚拟机方法.分享给大家. 产品VMware® Work ...

  2. Redis之实战篇(与Mybatis整合)

    摘要: 现在市面流行的java框架,一个是ssh(spring.struts2.hibernate),另一个是ssm(spring.springmvc.mybatis),由于之前已经有整合过ssm框架 ...

  3. SpringBoot编写自定义的starter 专题

    What’s in a name All official starters follow a similar naming pattern; spring-boot-starter-*, where ...

  4. 在JavaWeb项目中URL中字符串加密解密方案

    URL由来: 一般来说,URL只能使用英文字母.阿拉伯数字和某些标点符号,不能使用其他文字和符号.比如,世界上有英文字母的网址 “http://www.abc.com”,但是没有希腊字母的网址“htt ...

  5. 详解Linux文档属性、拥有者、群组、权限、差异

    写在前面 我们都知道Linux是一个支持多用户.多任务的系统,这也是它最优秀的特性,即可能同时有很多人都在系统上进行工作,所以千万不要强制关机,同时,为了保护每个人的隐私和工作环境,针对某一个文档(文 ...

  6. npm install 遇到问题的解决

    在利用npm install 命令时,要以管理员权限运行CMD,然后进入到npm-modules目录,然后再执行install命令

  7. JS奇淫巧技:防抖函数与节流函数

    应用场景 实际工作中,我们经常性的会通过监听某些事件完成对应的需求,比如: 通过监听 scroll 事件,检测滚动位置,根据滚动位置显示返回顶部按钮 通过监听 resize 事件,对某些自适应页面调整 ...

  8. angularJS--多个控制器之间的数据共享

    为了在控制器之间共享数据,需要在服务中添加一个用来储存用户名的方法.记住,服务在 应用的生命周期内是单例模式的,因此可以将用户名安全地储存在其中. <!DOCTYPE html> < ...

  9. HTML5 CSS3 专题 :诱人的实例 3D展示商品信息

    强化下perspective和transform:translateZ的用法.传统的商品展示或许并不能很好的吸引用户的注意力,但是如果在展示中添加适当的3D元素,~说不定效果不错哈~ 效果图: 说明一 ...

  10. http2.0与http1.X的区别

    此文只是方便重看,原文在:http://www.mamicode.com/info-detail-1199706.html 1.1 HTTP应用场景 http诞生之初主要是应用于web端内容获取,那时 ...