`
Getwaysun
  • 浏览: 30790 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

内部类学习:Java接口与抽象类的区别

    博客分类:
  • java
阅读更多
•接口和抽象类的区别和作用,这其实也是很多面试官喜欢问的问题,这里我就说说我的总结,顺便说说内部类的作用,当是给刚入门,或者想学习java的同学们能更好的理解它们的用法。

  1、接口(interface),接口被用来建立类与类之间关联的标准。

  Java code

  public interface ITest{

    publicvoidtest();

  }

    public class TestImpl implements ITest{

    public void test(){

  System.out.println("test");

  }

  }

  2、抽象类(abstract class),只要类中有一个抽象方法,此类就被标记为抽象类。实际上抽象类除了被继承之外没有任何意义。

  区别

  1、接口是公开(public)的,里面不能有私有的方法或变量,是用于让别人使用的,实现接口的一定要实现接口里定义的所有方法。

  而抽象类是可以有私有方法或私有变量的,实现抽象类可以有选择地重写需要用到的方法,但是必须实现里面所有的抽象方法。

  2、抽象类在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface(java中实现多重继承的方法之一)。

  3、抽象类中可以有自己的数据成员,也可以有非abstarct的成员方法。而在接口中,只能够有静态的不能被修改的数据成员(也就是必须是 static final的,不过在 interface中一般不定义数据成员),而且所有的成员方法都是抽象的。

  4、抽象类和接口所反映出的设计理念不同。

  其实abstract class表示的是"is-a"关系,interface表示的是"like-a"关系。(组合是"has a"关系)

  5、接口中定义的变量默认是public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值。

  抽象类中的变量默认是 friendly 型,其值可以在子类中重新定义,也可以重新赋值。

  一般的应用里,最顶级的是接口,然后是抽象类实现接口,最后才到具体类实现。不是很建议具体类直接实现接口的。还有一种设计模式是面向接口编程,而非面向实现编程。

  其实接口是抽象类的延伸,可以将它看做是纯粹的抽象类,就是说接口比抽象类还抽象,还有设计接口的目的就是为了实现C++中的多重继承,不过java团队设计的一样更有趣的东西来实现这个功能,那就是内部类(inner class)。

  3、内部类(inner class)

  Java code

  publicclassOuterClass{//外部类privateclassInnerClass{}//内部类}

  一、定义

  放在一个类的内部的类我们就叫内部类。

  二、作用

  1、内部类可以很好的实现隐藏,也就是封装性。一般的非内部类,是不允许有 private 与protected权限的,但内部类可以

  2、内部类拥有外围类的所有元素的访问权限

  3、可是实现多重继承(这个特点非常重要,个人认为它是内部类存在的最大理由之一)

  4、可以避免修改接口而实现同一个类中两种同名方法的调用

  三、多重继承的实现

  类一

  Java code

  publicclassExample1 {publicString getName() {return"luffyke";

  }

  }

  类二

  Java code

  publicclassExample2 {publicintgetAge()

  {return25;

  }

  }

  类三

  Java code

  publicclassMainExample {publicclassTest1extendsExample1 {publicString getName() {returnsuper.getName();

  }

  }publicclassTest2extendsExample2 {publicintgetAge() {returnsuper.getAge();

  }

  }publicString showName() {returnnewTest1().getName();

  }publicintshowAge() {returnnewTest2().getAge();

  }publicstaticvoidmain(String args[]) {

  MainExample example=newMainExample();

  System.out.println("姓名:"+example.showName());

  System.out.println("年龄:"+example.showAge());

  }

  }

  大家注意看类三,里面分别实现了两个内部类 Test1,和Test2 ,Test1类又继承了Example1,Test2继承了Example2,这样我们的类三MainExample就拥有了Example1和 Example2的方法和属性,也就间接地实现了多继承。
 
分享到:
评论

相关推荐

    java接口与内部类教学PPT

    接口-与抽象类之区别 6.接口-应用示例(设计模式) 7.内部类-简介 8.内部类-作用 9.内部类-特殊语法规则 10.内部类-安全性 11.内部类-局部内部类 12.内部类-匿名内部类 13.内部类-...

    java期末复习抽象类与接口,内部类,知识点.zip

    java期末复习抽象类与接口,内部类,知识点,期末考试用的,

    java学习资料抽象类,接口,内部类

    学习java技术的基础方面的知识,有利于更加好的理解 ,抽象类,接口,内部类

    java学习资料

    第一章Unix Day01:UNIX 介绍和基本...Day11:java 的抽象类和接口 Day12:String 类和字符编码介绍 Day13:正则表达式和包装类 Day14:java 的内部类 Day15:java 的集合类 Day16:java 的异常处理 Day17:Swing 介绍

    java中的抽象类,接口和内部类 PPT

    关于java中的抽象类,接口和内部类的幻灯片,自己去试讲的哦,不错的,欢迎下载

    JAVA抽象类、接口和内部类(下).mp4

    JAVA抽象类、接口和内部类(下).mp4

    JAVA抽象类、接口和内部类(上).mp4

    JAVA抽象类、接口和内部类(上).mp4

    Java的接口、内部类、常用类

    JAVA接口、内部类、常用类 一、JAVA接口 1.1 什么是接口?: 接口相当于特殊的抽象类,定义方式、组成部分于抽象类类似。 微观概念:接口是一种能力和约定 接口的定义:代表了某种能力 方法的定义:能力的具体要求 经验:...

    接口、内部类和Java API基础

    接口(interface)是一组常量和抽象方法的集合。接口是一种引用数据类型。 抽象方法的具体实现由实现接口的类完成,实现接口的类必须覆盖接口中的所有抽象方法。

    Java抽象类高难度面试题及解析

    您将了解抽象类与接口的区别、抽象类的实例化、构造函数和成员方法的使用、抽象类与其他类和抽象类的继承关系、抽象类的修饰符和限制规则等。此外,我们还讨论了抽象类与接口的结合应用、抽象类的静态方法和内部类、...

    Java开发详解.zip

    020609_【第6章:面向对象(高级)】_抽象类与接口的应用笔记.pdf 020610_〖第6章:面向对象(高级)〗_实例分析:宠物商店笔记.pdf 020611_【第6章:面向对象(高级)】_Object类笔记.pdf 020612_【第6章:面向对象...

    java日常词汇学习

    Abstract class 抽象类:抽象类是不允许实例化的类,因此一般它需要被进行扩展继承。  Abstract method 抽象方法:抽象方法即不包含任何功能代码的方法。  Access modifier 访问控制修饰符:访问控制修饰符用来...

    【Java面试+Java学习指南】 一份涵盖大部分Java程序员所需要掌握的核心知识

    抽象类和接口 代码块和代码执行顺序 Java自动拆箱装箱里隐藏的秘密 Java中的Class类和Object类 Java异常 解读Java中的回调 反射 泛型 枚举类 Java注解和最佳实践 JavaIO流 多线程 深入理解内部类 javac和javap Java8...

    03-java接口与内部类1

    第 3 章 接口与内部类接口是什么?接口有什么作用?如何使用接口?这些都是本章需要解决的问题。本章将详细地讲述接口的概念,并以实战结合的方式,学习这些抽象概念。

    Java入门1·2·3:一个老鸟的Java学习心得.rar 超清

    第2篇为Java语言高级语法,包括类、对象、方法、继承、多态、修饰符、接口、抽象类、内部类、Java异常处理和多线程编程。第3篇为Java语言编程进阶,包括Java编程常用知识、Java文件编程、Java文件I/O编程、Java TCP...

    编写一个抽象类Shape

    1) 编写一个抽象类Shape,其中有抽象方法getArea()和getPerimeter() 2) 在Shape类的基础上派生出Rectangle和Circle类,二者都实现了计算面积的方法getArea()和计算周长的方法getPerimeter(); 3) 构造main...

    Java核心编程技术源码

    Java语法基础:类、抽象类、接口、内部类、匿名类、异常、编码规范。Java核心编程:流、多线程、实体类、集合类、正则表达式、XML、属性文件。Java图形编程:AWT(Java2D、JavaSound、Media)、Swing、SWT、Jface。...

    观看韩顺平学习整理java的笔记到异常

    帮助大家复习java基础知识其中有 hashCode 2 toString 2 finalize 2 用已学知识做出简单的房屋出租系统 3 类方法使用注意事项和细节讨论 4 main()方法 4 代码块 4 代码块使用注意事项和细节 5 单例模式 6 final...

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    1.4.1 类(Class):Java世界中一类物体 14 1.4.2 方法(Method):物体的功能 15 1.4.3 main()方法:所有Java程序执行的起点 15 .1.5 名词解释 16 1.5.1 JDK和Java平台 16 1.5.2 Java编译器(Java Compiler)...

Global site tag (gtag.js) - Google Analytics