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.从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有常量和方法的实现。
import java.awt.Point;
/**
*
* @author: liu_y
* @Date: 2016年7月3日
* @Title:接口学习
*/
//定义接口
interface ICalculate {
final float PI=3.14f;
float getArea(float r); //接口中的方法是没有方法体的!!
float getCircleLong(float r); }
//接口的实现
class Cire implements ICalculate{
//定义计算圆的面积的方法
public float getArea(float r){
float area=PI*r*r;
return area;
}
//定义圆的周长的方法
public float getCircleLong(float r){
float circleLong=2*PI*r;
return circleLong;
}
} //范例一:图片的不同格式的保存
interface ImageSaver{
void save();
}
class GIFSaver implements ImageSaver{
@Override
public void save(){
System.out.println("将图片保存成GIF格式~");
}
} //为汽车增GPS定位功能
class Car{
private String name;
private int speed; public void setName(String name){
this.name=name;
}
public void setSpeed(int speed){
this.speed=speed;
}
public String getName(){
return this.name;
}
public int getSpeed(){
return this.speed;
}
@Override
public String toString(){
StringBuilder sb=new StringBuilder();
sb.append("车名:"+name+" ");
sb.append("车速:"+speed+"千米/小时");
return sb.toString();
} }
//定义GPS接口
interface GPS{
Point getLocation();
}
//定义GPSCar类,继承Car并实现接口GPS
class GPSCar extends Car implements GPS{
@Override
public Point getLocation(){
Point point=new Point();
point.setLocation(super.getSpeed(),super.getSpeed());
return point;
}
@Override
public String toString(){
StringBuilder sb=new StringBuilder();
sb.append(super.toString());
sb.append("\n坐标:"+getLocation().x+","+getLocation().y);
return sb.toString();
}
} public class Hello1Interface {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(" 接口、继承与多态\n");
//用接口实现求圆的面积与周长
System.out.println("用接口实现求圆的面积与周长");
Cire c=new Cire();
float clong=c.getCircleLong(5);
float area=c.getArea(5);
//对于精度缺失问题,以后可以参考类型BigDecimal
System.out.println("圆的周长是:"+clong+"\n○的面积是:"+area); //接口实现图片不同格式的保存;
System.out.println("\n接口实现图片不同格式的保存");
GIFSaver gif=new GIFSaver();
gif.save(); //继承类并且实现接口
System.out.println("\n定义GPSCar类,继承Car并实现接口GPS");
GPSCar gpscar=new GPSCar();
gpscar.setName("Benz");
gpscar.setSpeed(888);
Point pt=gpscar.getLocation();
String ss=gpscar.toString();
System.out.println(pt);
System.out.println(ss);
} }
输出结果:
接口、继承与多态 用接口实现求圆的面积与周长
圆的周长是:31.400002
○的面积是:78.5 接口实现图片不同格式的保存
将图片保存成GIF格式~ 定义GPSCar类,继承Car并实现接口GPS
java.awt.Point[x=888,y=888]
车名:Benz 车速:888千米/小时
坐标:888,888
No2_1.接口继承多态_Java学习笔记_接口的更多相关文章
- No2_4.接口继承多态_Java学习笔记_经典案例
import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Collections; import jav ...
- No2_3.接口继承多态_Java学习笔记_多态
***多态***1.多态性:通常使用方法的重载(Overloading)和重写(Overriding)实现类的多态:2.重写之所以具有多态性,是因为父类的方法在子类中被重写,方法名相同,实现功能不同. ...
- No2_2.接口继承多态_Java学习笔记_继承
***类的继承***1.继承的实现extends2.[修饰符] class 子类名 extends 父类名{}3.修饰符一般为:public abstract final4.重写是指父子类之间的关系, ...
- No2_5.类的高级特性_Java学习笔记_抽象类和成员内部类
一.抽象类1.所谓抽象类,只声明方法的存在而不去实现它的类:2.抽象类不能被实例化,即不能实现其对象:3.abstract class 类名{ 类体 }4.包含一个或多个抽象方法的类必须声明成抽象类: ...
- java学习笔记_接口
接口:interface(关键字) public interface USB {} 1. 接口中都是抽象方法,方法前面的可见度(public.private)和抽象关键字(abstract)可以不写. ...
- jQuery源代码学习笔记_工具函数_noop/error/now/trim
jQuery源代码学习笔记_工具函数_noop/error/now/trim jquery提供了一系列的工具函数,用于支持其运行,今天主要分析noop/error/now/trim这4个函数: 1.n ...
- Java 学习笔记(7)——接口与多态
上一篇说了Java面向对象中的继承关系,在继承中说到:调用对象中的成员变量时,根据引用类型来决定调用谁,而调用成员方法时由于多态的存在,具体调用谁的方法需要根据new出来的对象决定,这篇主要描述的是J ...
- Java学习笔记 抽象类 接口 多态
instanceof 对象名 instanceof 类名 该对象是否属于该类 Animal animal = new Dog(); if(animal instanceof Dog){ Dog d = ...
- [知了堂学习笔记]_集合接口list与集合接口set的区别
在Java中 除了 Map以外的集合的根接口都是Collection接口,而在Collection接口的子接口中,最重要的莫过于List和Set集合接口. 今天我们就来谈谈List集合接口与Set集合 ...
随机推荐
- js 获取mac地址
js 获取mac地址 function MacInfo(){ var locator =new ActiveXObject ("WbemScripting.SWbemLocator" ...
- jquery1.9学习笔记 之选择器(基本元素三)
标签选择器("element") 描述: 选择所有与给出标签名相匹配的元素. 同功能的JS原生方法:getElementByTagName() 例子: 查找每个div元素. &l ...
- PHP面向对象的构造方法与析构方法
构造方法与析构方法是对象中的两个特殊方法,它们都与对象的生命周期有关.构造方法时对象创建完成后第一个被对象自动调用的方法,这是我们在对象中使用构造方法的原因.而析构方法时对象在销毁之前最后一个被对象自 ...
- JS apply()的使用详解
首先: apply和call的区别在哪里? 其次: 什么情况下用apply,什么情况下用call? 最后: 一般在什么情况下可以使用apply? *************************** ...
- Windows下编译eXosip、osip,以及UAC和UAS的例子
今天开始了SIP开源库的学习,我选择了osip和eXosip,但是这两个库的编译使用有些麻烦,源码下来之后编译会出现很多问题,网上也没有找到完整的编译介绍,只能一步一步的找办法解决,最后终于编译成功! ...
- VS项目如何添加到svn
SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS.CVS,它采用了分支管理系统,它的设计目标就是取代CVS.这里就讲一下VS2010如何将项目导入SVN版本控制. 工具 ...
- testng跑失败用例重试
testng 提高用例通过率,失败用例要重新运行一次 步骤: 1.新建一个Retry 类,implements IRetryAnalyzer接口,这个类里面确定重跑次数,以及分析每次失败是否需要重新运 ...
- 【CSS3】横屏引导小动画
演示地址:http://codepen.io/anon/pen/oXbXdX 主要知识点: @media all and (orientation : landscape) { /* 这是匹配横屏的状 ...
- 如何在android上去控制开发进度
这次android的壁纸软件1.0版本终于可以上线了,软件的功能基本上实现了,但是用户体验不太好.在整个开发阶段和测试阶段,出现了很多预料之外的事情,比如size是1M多的json文件解析.高清图片导 ...
- HDU ACM 1078 FatMouse and Cheese 记忆化+DFS
题意:FatMouse在一个N*N方格上找吃的,每一个点(x,y)有一些吃的,FatMouse从(0,0)的出发去找吃的.每次最多走k步,他走过的位置能够吃掉吃的.保证吃的数量在0-100.规定他仅仅 ...