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("\n坐标:"+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(" 接口、继承与多态\n");
 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+"\n○的面积是:"+area);
 98         
 99         //接口实现图片不同格式的保存;
100         System.out.println("\n接口实现图片不同格式的保存");
101         GIFSaver gif=new GIFSaver(); 
102         gif.save();
103         
104         //继承类并且实现接口
105         System.out.println("\n定义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

 

posted @ 2016-07-03 21:50  sunshine-habit  阅读(393)  评论(0编辑  收藏  举报