zoukankan      html  css  js  c++  java
  • No2_1.接口继承多态_Java学习笔记_接口

    接口、继承与多态
    1.继承和多态是面向对象开发语言中的重要一个环节,使用得当,可以将整个程序的架构变得非常有弹性,减少代码冗余;
    2.继承:复用定义好的类;
    3.多态:可以动态调整对象的调用,降低对象的依存关系;
    4.接口:Java中类可以实现多个接口,被用来建立类与类之间的标准;


    ***接口***
    1.接口的目的:
    Java语言只支持单继承,即一个类只能有一个父类。
    实际应用中,经常需要多继承解决问题,为解决该问题,提供接口实现类的多重继承;
    2.接口定义:与类的定义类似,接口的声明和接口体;
    [修饰符] interface 接口名 [extends 父接口名列表]{
    [public] [static] [final] 变量;
    [public] [abstract] 方法;
    }
    3.接口中的方法是没有方法体的;
    4.接口的实现:
    接口定义后就可以在类中实现该接口;用implements;
    [修饰符] class <类名> [extends 父类名][implements 接口列表]{}
    4.在类的继承中只能做单重继承,而实现接口时,一次可以实现多个接口,用逗号隔开;
    这样可能会出现变量名或方法冲突的情况,需要明确指定变量的接口,“接口名.变量”实现;

    5.接口(interface)是抽象方法和常量值的定义的集合;

    6.从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有常量和方法的实现。

      1 import java.awt.Point;
      2 /**
      3  * 
      4  * @author: liu_y
      5  * @Date: 2016年7月3日
      6  * @Title:接口学习
      7  */
      8         //定义接口
      9         interface ICalculate {
     10             final float PI=3.14f;
     11             float getArea(float r);    //接口中的方法是没有方法体的!!
     12             float getCircleLong(float r);
     13         
     14         }
     15         //接口的实现
     16         class Cire implements ICalculate{
     17             //定义计算圆的面积的方法
     18             public float getArea(float r){
     19                 float area=PI*r*r;
     20                 return area;
     21             }
     22             //定义圆的周长的方法
     23             public float getCircleLong(float r){
     24                 float circleLong=2*PI*r;
     25                 return circleLong;
     26             }
     27         }
     28         
     29         //范例一:图片的不同格式的保存
     30     interface ImageSaver{
     31             void save();
     32         }
     33     class GIFSaver implements ImageSaver{
     34         @Override
     35         public void save(){
     36             System.out.println("将图片保存成GIF格式~");
     37         }
     38     }
     39         
     40     //为汽车增GPS定位功能
     41     class Car{
     42         private String name;
     43         private int speed;
     44         
     45         public void setName(String name){
     46             this.name=name;
     47         }
     48         public void setSpeed(int speed){
     49             this.speed=speed;
     50         }
     51         public String getName(){
     52             return this.name;
     53         }
     54         public int getSpeed(){
     55             return this.speed;
     56         }
     57         @Override
     58         public String toString(){
     59             StringBuilder sb=new StringBuilder();
     60             sb.append("车名:"+name+" ");
     61             sb.append("车速:"+speed+"千米/小时");
     62             return sb.toString();
     63         }
     64         
     65     }
     66         //定义GPS接口
     67          interface GPS{
     68             Point getLocation();
     69         }
     70          //定义GPSCar类,继承Car并实现接口GPS
     71          class GPSCar extends Car implements GPS{
     72              @Override
     73              public Point getLocation(){
     74                  Point point=new Point();
     75                  point.setLocation(super.getSpeed(),super.getSpeed());
     76                  return point;
     77              }
     78              @Override
     79              public String toString(){
     80                      StringBuilder sb=new StringBuilder();
     81                     sb.append(super.toString());
     82                     sb.append("
    坐标:"+getLocation().x+","+getLocation().y);
     83                     return sb.toString();
     84              }
     85          }
     86         
     87 public class Hello1Interface {
     88     public static void main(String[] args) {
     89         // TODO Auto-generated method stub
     90         System.out.println(" 接口、继承与多态
    ");
     91         //用接口实现求圆的面积与周长
     92         System.out.println("用接口实现求圆的面积与周长");
     93         Cire c=new Cire();
     94         float clong=c.getCircleLong(5);
     95         float area=c.getArea(5);
     96         //对于精度缺失问题,以后可以参考类型BigDecimal
     97         System.out.println("圆的周长是:"+clong+"
    ○的面积是:"+area);
     98         
     99         //接口实现图片不同格式的保存;
    100         System.out.println("
    接口实现图片不同格式的保存");
    101         GIFSaver gif=new GIFSaver(); 
    102         gif.save();
    103         
    104         //继承类并且实现接口
    105         System.out.println("
    定义GPSCar类,继承Car并实现接口GPS");
    106         GPSCar gpscar=new GPSCar();
    107         gpscar.setName("Benz");
    108         gpscar.setSpeed(888);
    109         Point pt=gpscar.getLocation();
    110         String ss=gpscar.toString();
    111         System.out.println(pt);
    112         System.out.println(ss);
    113     }
    114 
    115 }

    输出结果:

     1  接口、继承与多态
     2 
     3 用接口实现求圆的面积与周长
     4 圆的周长是:31.400002
     5 ○的面积是:78.5
     6 
     7 接口实现图片不同格式的保存
     8 将图片保存成GIF格式~
     9 
    10 定义GPSCar类,继承Car并实现接口GPS
    11 java.awt.Point[x=888,y=888]
    12 车名:Benz 车速:888千米/小时
    13 坐标:888,888
  • 相关阅读:
    【数论】错排问题
    【数论】求逆元的几种方式
    【数论】卢卡斯定理模板 洛谷P3807
    【单调队列优化dp】 分组
    【期望dp】绵羊跳弹簧
    软件工程总结
    结对项目-地铁出行路线规划程序(续)
    个人作业--week3
    个人作业-week2
    个人作业-week1
  • 原文地址:https://www.cnblogs.com/sunshine-habit/p/5638933.html
Copyright © 2011-2022 走看看