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