java中接口、抽象类的区别,以及内部类若干思考
来源:互联网 发布:淘宝鹤王阿胶糕是假货 编辑:程序博客网 时间:2024/04/29 15:24
贴上测试代码:
package interface_test;interface dog{void move();void wang();class littledog implements dog{ //接口内部内public void move(){System.out.println("dog move");}public void wang(){System.out.println("dog wang");}public void little(){System.out.println("dog little");}}}abstract class cat{abstract void move();abstract void miao(); void jump(){System.out.println("cat jump"); //抽象类中可以实现方法,接口中不行}class littlecat{ //同理,抽象类里面也可以有内部类}}class A{private int i = 1;public void f(){System.out.println("A:f()");}class B{public void f(){System.out.println("B:f()");System.out.println("B:i is:" + i); // 访问外围类数据。当然还可以是函数。}}}class idog implements dog{ //接口的实现public void move(){System.out.println("implements move");}public void wang(){System.out.println("implements wang");} public void say(){ // 实现接口可添加新的方法,抽象类也一样。但是接口需实现所有的接口,抽象类需要实现所有抽象方法。 dog.littledog dl = new dog.littledog(); dl.little(); }}class icat extends cat{public void move(){System.out.println("extends move");}public void miao(){System.out.println("extends miao");}//public void jump(){ //普通方法,可以覆盖,也可以不覆盖//System.out.println("extends jump");//}}class IA{void f(){System.out.println("IA");}class IAA{IA outer(){return IA.this;}}IAA iaa(){return new IAA();}}class IB{void f(){System.out.println("IB");}class IBB{void f(){System.out.println("IBB");}}}public class t01{public static void main(String[] args){ A a = new A(); //内部内的用法 A.B ab = a.new B(); a.f(); ab.f(); idog id = new idog();//idog类调用 id.move(); id.say(); icat ic = new icat(); ic.move(); ic.jump(); IA ia = new IA(); //这种方法不创建内部内对象,减少开销. IA.IAA iaa = ia.iaa(); iaa.outer().f(); IB ib = new IB();//创建了内部类对象 IB.IBB ibb = ib.new IBB(); ibb.f();}}
先说说接口与抽象类的相似处
1.都不能被直接实例化,都可以通过继承实现其抽象方法,且在子类都可以添加新的方法。
2.都是面向抽象编程的技术基础,实现了诸多的设计模式。
3.两者里面都可以含内部类。
不同之处:
1.接口支持多继承;抽象类不能实现多继承。
2.接口只能定义抽象规则;抽象类既可以定义规则,还可能提供已实现的成员,还可以定义成员变量。
3.接口可以用于支持回调;抽象类不能实现回调,因为继承不支持
4.接口子类需要实现接口里面所有方法,抽象类子类需要实现所有抽象方法,也可以重写一般方法。
5.接口对行为抽象,抽象的对类抽象.
(可能还有一些不完善的地方,这是我目前的认识-_-)
下面说说内部类。在接口里面使用内部类,使得这些公共代码,可以被该接口的所有不同实现所使用。这里主要介绍一下它的使用方法
分.this和.new方法,具体见代码,值得一提的是.new方法创建了内部类对象,个人觉得比较好用.
0 0
- java中接口、抽象类的区别,以及内部类若干思考
- java接口、抽象类和内部类的区别
- 接口,抽象类,内部类的区别
- Java中:接口,抽象类,内部类
- java 接口、抽象类、具体类、内部类、匿名内部类的区别及它们之间的关系
- java 抽象类与接口之间的关系以及内部类的扩展
- 转:接口、抽象类和内部类的区别
- Java接口,抽象类,内部类
- java中的抽象类,接口,内部类
- Java接口,抽象类,内部类
- Java接口,抽象类,内部类
- Java接口,抽象类,内部类
- Java接口,抽象类,内部类
- java接口,抽象类,内部类
- [推荐] Java接口,抽象类,内部类
- Java之接口,抽象类,内部类
- java接口,抽象类和内部类
- Java 抽象类、接口、内部类
- Sketch 快捷键速记表(中英对照)
- centos chown改变文件拥有者
- SQL学习笔记11——视图查询
- Android 数据持久化
- 自定义imageview缩放与viwepager的滑动冲突
- java中接口、抽象类的区别,以及内部类若干思考
- 网页中获取网络mp3文件的时常
- Python数据存储:pickle模块的使用讲解
- 新加装的硬盘,装上系统后发现EFI分区没有被创建,还是用旧硬盘的EFI分区
- JSON详细学习之Gson in JAVA
- 删除链表中的重复结点
- android PixelFormat与ImageFormat的对比
- 手动配置AFNetworking时, 报错
- Hadoop2.2.0源码编译