抽象类

Java中的设计模式

你。 提交于 2020-03-06 16:39:38
转自:http://www.importnew.com/12526.html 你可以通过 Wikipedia 对设计模式有个整体上的理解。Wikipedia上也提高了GoF所涉及到的模式。我这里总结一下,并且尽可能指出在JavaSE与JavaEE的API中是如何运用这些模式的。 创建型设计模式 抽象工厂模式 特点: 创建方法返回一个可以用来创建抽象类或接口的工厂类。 javax.xml.parsers.DocumentBuilderFactory#newInstance() javax.xml.transform.TransformerFactory#newInstance() javax.xml.xpath.XPathFactory#newInstance() 生成器模式 特点: 创建方法返回这个实例本身。 java.lang.StringBuilder#append() 不同步 java.lang.StringBuffer#append() 同步 java.nio.ByteBuffer#put() (除此之外,还有 CharBuffer , ShortBuffer , IntBuffer , LongBuffer , FloatBuffer 与 DoubleBuffer ) javax.swing.GroupLayout.Group#addComponent() java

java学习笔记(七)

妖精的绣舞 提交于 2020-03-06 14:12:48
Java 接口 接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。 接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。 除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。 接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。另外,在 Java 中,接口类型可用来声明一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现的对象 接口与类相似点: 一个接口可以有多个方法。 接口文件保存在 .java 结尾的文件中,文件名使用接口名。 接口的字节码文件保存在 .class 结尾的文件中。 接口相应的字节码文件必须在与包名称相匹配的目录结构中。 接口与类的区别: 接口不能用于实例化对象。 接口没有构造方法。 接口中所有的方法必须是抽象方法。 接口不能包含成员变量,除了 static 和 final 变量。 接口不是被类继承了,而是要被类实现。 接口支持多继承。 接口特性 接口中每一个方法也是隐式抽象的,接口中的方法会被隐式的指定为 public abstract(只能是 public abstract,其他修饰符都会报错)。

继 承(面向对象特征之二)

▼魔方 西西 提交于 2020-03-06 09:34:32
好处: 1 :提高了代码的复用性。 2 :让类与类之间产生了关系,提供了另一个特征多态的前提。 父类的由来:其实是由多个类不断向上抽取共性内容而来的。 java中对于继承,java只支持单继承。java虽然不直接支持多继承,但是保留了这种多继承机制,进行改良。 单继承:一个类只能有一个父类。 多继承:一个类可以有多个父类。 为什么不支持多继承呢? 因为当一个类同时继承两个父类时,两个父类中有相同的功能,那么子类对象调用该功能时,运行哪一个呢?因为父类中的方法中存在方法体。 但是java支持多重继承。A继承B B继承C C继承D。 多重继承的出现,就有了继承体系。体系中的顶层父类是通过不断向上抽取而来的。它里面定义的该体系最基本最共性内容的功能。 所以,一个体系要想被使用,直接查阅该系统中的父类的功能即可知道该体系的基本用法。那么想要使用一个体系时,需要建立对象。建议建立最子类对象,因为最子类不仅可以使用父类中的功能。还可以使用子类特有的一些功能。 简单说:对于一个继承体系的使用,查阅顶层父类中的内容,创建最底层子类的对象。 子父类出现后,类中的成员都有了哪些特点: 1 :成员变量。 当子父类中出现一样的属性时,子类类型的对象,调用该属性,值是子类的属性值。 如果想要调用父类中的属性值,需要使用一个关键字: super This : 代表是本类类型的对象引用。 Super :

java接口详解

Deadly 提交于 2020-03-06 05:31:22
来整理一下接口 Java 接口 接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。 接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。 除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。 接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。另外,在 Java 中,接口类型可用来声明一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现的对象。 接口与类相似点: 一个接口可以有多个方法。 接口文件保存在 .java 结尾的文件中,文件名使用接口名。 接口的字节码文件保存在 .class 结尾的文件中。 接口相应的字节码文件必须在与包名称相匹配的目录结构中。 接口与类的区别: 接口不能用于实例化对象。 接口没有构造方法。 接口中所有的方法必须是抽象方法。 接口不能包含成员变量,除了 static 和 final 变量。 接口不是被类继承了,而是要被类实现。 接口支持多继承。 接口特性 接口中每一个方法也是隐式抽象的,接口中的方法会被隐式的指定为 public abstract(只能是 public abstract

Java自学笔记之抽象类(abstract)

﹥>﹥吖頭↗ 提交于 2020-03-06 03:25:24
抽象函数 抽象类概述:抽象就是看不懂的。 抽象类特点: 抽象类和抽象方法必须用 abstract 关键字修饰。 abstract class 类名 { } public abstract void test ( ) ; 抽象类不一定有抽象方法,有抽象方法的类不一定是抽象类或者是接口。 抽象类不能实例化,那么按照多态的方式,由具体子类实例化。这也是多态的一种,抽象类多态。 抽象类的子类要么是抽象类要么重写抽象类中的所有抽象方法 abstract class Hello { //抽象函数。 需要 abstract 修饰, 并以分号;结束 abstract void work ( ) ; } 抽象类成员的特点: 成员变量:既可以是变量,也可以是常量。 构造方法:抽象类是一个类,所以,它有构造方法,用于子类访问父类数据的初始化。 成员方法:既可以是抽象的,也可以是非抽象的。 abstract class People { public People ( ) { //构造方法 } String name = "张三" ; // 变量 final int NUM = 1 ; // 常量 abstract void test ( ) ; // 抽象方法 public void work ( ) { // 非抽象方法 System . out . println ( "上班....." ) ; }

关于java接口和抽象类的区别

北城余情 提交于 2020-03-06 01:18:35
之前看Spring源码的时候一直不理解为啥spring框架中定义了一个接口之后经常会先用几个抽象类实现,然后再通过继承抽象类来实现真实的类。直到前几天自己重构代码的时候才真正理解抽象类和接口在使用上的区别。 抽象类可以继承接口,也可以定义抽象方法,但是也可以定义变量和实现方法,但是不能被实例化。而接口只包含需实现的方法。因此可以通过在抽象类继承接口并且定义通用的变量及方法,但不实现具体的方法。通过继承这个抽象类可以很方便的实现相关接口,而不需要每个实现类都声明一些重复的变量。 来源: CSDN 作者: Nychophilia1990 链接: https://blog.csdn.net/weixin_40942593/article/details/104684993

3.5Java博客

南笙酒味 提交于 2020-03-06 01:10:39
抽象类 对抽象类的理解: 抽象类字面意思就是抽象的类( 这不废话吗 ),然后什么叫抽象的类,就是可能他并不是一个实际存在的东西,而可能是动物,植物这种较为抽象的对象。 抽象类的作用: 比如说一个动物父类,他下面有很多的子类如狗、猫等。但是如果有用户或者测试,他new了一个动物类,那这是什么东西?从而引申出抽象类,既不可初始化不可创建对象的类。只能被继承。关键字为abstract。 抽象类的需要注意的地方: 如果声明出一个抽象的方法,必须将类也标记成抽象的。 不能再非抽象类中拥有抽象方法。即使只有一个抽象方法,此类必须为抽象类。 抽象的方法没有内容,只是单纯为了多态。 实现抽象的方法,就如同覆盖方法。 Animal2类 package Animal2 ; public abstract class Animal2 { public void eat ( String name ) { System . out . println ( name + " is eating" ) ; } ; public abstract void be_friendly ( String name ) ; } Cat类 package Animal2 ; public class Cat extends Animal2 { public void be_friendly ( String name )

java面试题

回眸只為那壹抹淺笑 提交于 2020-03-05 22:51:53
网上关于java的面试题随处可见,可比较宅的我仍然愿意总结到自己的博客中,希望对看到的小伙伴们有所帮助,答案仅供参考,也欢迎小伙伴们留言。。。 一、java基础 1.JDK 和 JRE 有什么区别? jdk是java开发工具包,提供了java开发环境和运行环境,它包含jre,还包含了很多java程序调试和分析工具。 jre为java运行提供了所需环境。 简而言之:如果需要运行java程序,只需安装jre就行,如果要编写java程序,需要安装jdk。 2.== 和 equals 的区别是什么? ==基本类型比较的的是值,引用类型比较的是地址值。 equals方法比较引用数据类型,所有的对象都会继承 Object 类中的方法,没有重写 Object 类中的 equals 方法,equals方法和==号比较引用数据类型无区别,重写后的equals方法比较的是对象中的属性。 特例: 当用equals()方法进行比较时,对类File、String、Date及包装类(WrapperClass)来说,是比较类型及内容而不考虑引用的是否同一对象;因为这些类重写了Object类的equals()方法。 参考本人博客: https://blog.csdn.net/duan196_118/article/details/104092688 3.两个对象的 hashCode()相同,则 equals(

JavaSE基础知识

一世执手 提交于 2020-03-05 22:44:42
Java 面向对象 1. 面向对象都有哪些特性以及你对这些特性的理解 1) 继承 : 继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类 ( 超类、基类 ); 得到继承信息的类被称为 子类(派生类)。 2) 封装 : 通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。 封装就是隐藏一切可隐藏的东西,只向外界提供简单的编程接口。 3) 多态性 : 多态性是指允许不同子类型的对象对同一消息作出不同的响应。 简单的说就是用同样的对象引用调用同样的方法但是做了不同的事情。 多态性分为 编译时的多态性和运行时的多态性 。 方法重载( overload )实现的是编译时的多态性(也称为前绑定) , 而方法重写 ( override )实现的是运行时的多态性(也称为后绑定)。 运行时的多态是面向对象 精髓的东西, 要实现多态需要做两件事: 1. 方法重写(子类继承父类并重写父类中已有的或抽象的方法); 2. 对象造型(用父类型引用引用子类型对象,这样同样的引用调用同样的方法就会根据子类对象的不同而表现出不同的行为)。 4) 抽象 : 抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。 2. 访问权限修饰符 public、private、protected, 以及不写(默认)时的区别 修饰符 当前类 同 包 子 类 其他包

java中级,知识点归纳(一)

社会主义新天地 提交于 2020-03-05 12:25:34
一、接口和抽象类的区别 抽象类中可以含有构造方法,而接口内不能有。 抽象类中可以有普通成员变量,而接口中不能有。 抽象类中可以包含非抽象的普通方法,而接口中所有方法必须是抽象的,不能有非抽象的普通方法。 抽象类中的抽象方法的访问类型可以是public、protected和默认类型,但接口中的抽象方法只有public和默认类型。 抽象类中可以包含静态方法,接口内不能包含静态方法。 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以是任意,但接口中定义的变量只能是public static类型,并且默认为public static类型。 一个类可以实现多个接口,但只能继承一个抽象类。 接口更多的是在系统框架设计方法发挥作用,主要定义模块之间的通信,而抽象类在代码实现方面发挥作用,可以实现代码重用。 二、java虚拟机的运行时数据区有几块?线程私有和线程共享区域有哪些? 程序计数器:线程私有,当前线程执行的字节码的行号指示器。 虚拟机栈:线程私有,存放基本数据类型、对象引用和returnAddress类型。 本地方法栈:为虚拟机使用到的Native方法服务。 java堆:线程共享,存放对象的实例,也是GC回收器管理的主要区域。 方法区:线程共享,存放已被虚拟机加载的类信息、常量、静态变量、即时编译后的代码等数据。 运行时常量池:方法区的一部分