面向接口思想笔记
来源:互联网 发布:mac定制机 编辑:程序博客网 时间:2024/05/22 12:42
1,接口的本质
接口本身就是一钟完全抽象类,也就是说,里面的方法全部都是抽象方法,里面的变量全是常量
2,接口的定义
接口也是一个类,不过使用interface来进行声明,里面的方法与抽象方法一样,没有方法体
public interface Area { public abstract double area(); //可以省略:public abstract double perimeter();//Java会自动帮我们加:public abstract //int x=5; //public static final int MAX=5; public static final int MAX=5; public static final double PI=3.14;}
3,接口的使用
1)接口本身是不能new对象的,只能当作引用来用,引用的实例为实现类对象
2)一个类要实现接口,必须把接口中所有的抽象方法全部实现,否则就要声明成抽象类。 实现类我们有时也把它称为子类。
3)接口本身上是类,它继承自Object,因此通过接口引用可以访问Object中的所有方法
public class Rectangle implements Area{private int width;private int height; public Rectangle(int width, int height) {this.width = width;this.height = height;}public Rectangle() {}public int getWidth() {return width;}public void setWidth(int width) {this.width = width;}public int getHeight() {return height;}public void setHeight(int height) {this.height = height;}//实现接口中的抽象方法public double area(){ return width*height; }@Overridepublic double perimeter() {return (width+height)*2;}@Overridepublic String toString() {aa();return "一个矩形:"+width + ", " + height;}public void aa(){//x++;//MAX++;//WA:接口中的变量全是public static final的,不能重新赋值//MAX=10; //WASystem.out.println("MAX=" + MAX);}}
public class Circle implements Area {private int r;public Circle(int r) {this.r = r;}public Circle() {super();}@Overridepublic double area() {return PI*r*r;}@Overridepublic double perimeter() {return 2*PI*r;}@Overridepublic String toString() {return "圆,半径:" + r;}}
public class Rectangle implements Area{private int width;private int height; public Rectangle(int width, int height) {this.width = width;this.height = height;}public Rectangle() {}public int getWidth() {return width;}public void setWidth(int width) {this.width = width;}public int getHeight() {return height;}public void setHeight(int height) {this.height = height;}//实现接口中的抽象方法public double area(){ return width*height; }@Overridepublic double perimeter() {return (width+height)*2;}@Overridepublic String toString() {aa();return "一个矩形:"+width + ", " + height;}public void aa(){//x++;//MAX++;//WA:接口中的变量全是public static final的,不能重新赋值//MAX=10; //WASystem.out.println("MAX=" + MAX);}}
4,单继承,多实现
为了避免C++中 的钻石问题(大概就是一个类可以继承多个类,从而导致使用多态的时候对象需要随机调用父类方法),java放弃了多继承,而是使用单继承多实现的方式。
单继承:也就是一个类只能继承一个类(但可以一个类可以被多个类继承)
多继承:一个类可以实现多个接口,但是每一个接口的方法都需要实现,不然只能声明为抽象类,抽象方法
public class Globe implements Area,Volume {private int r;public Globe(int r) {this.r = r;}public Globe() {super();}@Overridepublic double volume() {return PI*4/3*r*r*r;}@Overridepublic double area() {return 4*PI*r*r;}@Overridepublic String toString() {return "一个球,面积:"+area()+",体积:"+volume();}}
5,接口的多继承
一个接口可以继承多个接口,里面并不实现任何方法,唯一的作用就是整合接口,方便使用,在实现这个接口的时候,需要实现它的所有方法,同时它也可以解决一些多态问题。但是在实际开发当中,我们并不建议使用这种方式,而是使用专一的接口,因为这会破坏数据的封装性,大家都是专一的人,何必呢
//把两个父接口中的抽象方法全部继承过来了---综合接口public interface AreaVolume extends Area,Volume {}public interface Area {public abstract double area();public static final double PI=3.14;}public interface Volume {public abstract double volume();}
6,值得注意的一点
因为接口中的public是可以省略的,所以在实现它的方法的时候,就需要注意权限问题了,子类的权限是不能低于父类的,但是我们通常充分使用myeclipse,就不会出现问题
7,为什么需要接口?
讲了那么多,到底java何解需要接口呢
1)接口具有封装隔离功能。
2)系统灵活性增强,当下层需要改变时,只要接口及接口功能不变,则上层不用做任何修改。甚至可以在不改动上层代码时将下层整个替换掉
3)约束,要实现它,就必须实现它的全部方法
- 面向接口思想笔记
- 面向接口设计思想
- 面向接口的编程思想
- 面向接口编程------编程思想
- java面向对象思想笔记
- java面向对象思想笔记
- Java 面向对象思想笔记
- 学习笔记-面向对象思想
- C++面向对象思想笔记
- java面向对象思想之接口、抽象
- 实例demo理解面向接口思想
- 面向接口编程思想(转)
- 【多态】面向接口的编程思想
- 面向接口编程(1)--思想基础
- 设计思想之二面向接口编程
- COM思想很好的体现了面向接口编程思想。
- Java自学笔记之面向对象思想
- 学习笔记-面向对象基本思想
- 微信小程序bindlongtap触发bindtap问题
- 【LeetCode】C# 54、Spiral Matrix
- 使用python读取.txt文件并保存到Excel中
- 居财产险销量榜前十 碎屏险列入支付宝
- elasticsearch之配置详解
- 面向接口思想笔记
- Android内存泄漏总结
- 响应式导航栏
- 动态规划 乘电梯 记忆化搜索
- VS2003 搜索直接导致卡死问题
- CentOS 7下安装Redis 4
- Android Render(一)Activity窗口构成和绘制解析
- 云原生(Cloud Native)- 移动App研发新范式
- ubuntu 解决非正常关闭apt-get的锁