什么是抽象类:

  当你在定义一个父级的类的时候,往往在父级内的方法没有添加任何内容,这时候如果你在子类里面调用父级的时候,万一在子类之中类名或者方法名没有写正确,会出现不执行的情况,但是这种情况默认是不报错的,此时如果将父级定义为抽象类的时候,子类必须有父类的内容,即写错名称会报错,这时候就体现抽象类的作用了。

  总结两句话来说就是:

  1.父类和子类中,父类的方法有很多情况下是没有内容的。

  2.如果子类重写的时候写错,正常方法不会报错。

抽象类:

用abstract修饰的类叫做抽象类,抽象类不能被实例化,即不能new出来一个抽象类的对象。

抽象方法:

用abstract关键字修饰的方法叫做抽象方法,抽象方法必须定义在抽象类中。

抽象方法有声明,写法为后面不跟花括号,因为抽象方法不知道是给谁定义,所以可以不写函数体。

public abstract class YunSuan {
protected int a;
protected int b; public abstract void QiuZhi();
}

抽象类和抽象方法的关系:

  抽象方法必须定义在抽象类里面。

  如果一个类包含了抽象方法,那么这个类一定要声明成抽象类。

  如果某个类是抽象类,那么这个类既可以包含抽象方法,也可以包含具体的方法(有声明,有实现)。

  抽象类中如果全是具体方法也是允许的;抽象类也可以是空的,即什么也不包含。

抽象类的继承:

  当父类为抽象类的时候,子类继承父类,会出现两种情况,子类是抽象类,子类不是抽象类:

  子类是抽象类的时候:

  子类必须还要在class上定义一个abstract的关键字,子类可以选择实现或者不实现父类的抽象方法,因为抽象类中可以包含抽象方法和具体方法,所以子类中也可以全部写为具体方法,或者写为全部的抽象方法,亦或者抽象方法和具体方法都有。

  子类不是抽象类的时候:

  子类不是抽象类的时候,这时候子类就要全部实例化,也就是要把父类的抽象方法全部实现。这时候子类就不必使用abstract关键字了。

抽象类的具体用途:

  抽象类的抽象方法定义一个规范,或者叫做约定,具体实现交给子类来做。

  因为抽象类的实现可能无法完成或者没有意义。

例:

public abstract class USB {
public abstract void QiDong();
public abstract void TingZhi();
}

先定义一个USB的抽象方法作为父类。

public class UPan extends USB {
public void QiDong(){
System.out.println("U盘启动了");
}
public void TingZhi(){
System.out.println("U盘停止了");
}
}

再定义一个UPan作为实例化子类,将父类的内容全部实例化。

public abstract  class JianPan extends USB {

    public void QiDong() {
// TODO 自动生成的方法存根
System.out.println("键盘启动了");;
} }

再定义一个JianPan作为抽象化子类,只实现父类里面的QiDong。

public class LuoJiJianPan extends JianPan {

    public void QiDong(){
System.out.println("罗技键盘启动");
}
@Override
public void TingZhi() {
// TODO 自动生成的方法存根
System.out.println("罗技键盘停止了");;
} }

最后定义一个LuoJiJianPan作为JianPan的子类,将JianPan继承下来的USB中未实例化的TingZhi实例化,再将JianPan中的QiDong重写。

public class DianNao {
public void USBChaRu(USB usb){
usb.QiDong();
}
public void USBBaChu(USB usb){
usb.TingZhi();
}
}
public static void main(String[] args) {
DianNao d = new DianNao(); LuoJiJianPan pan = new LuoJiJianPan(); d.USBChaRu(pan);
     d.USBBaChu(pan); }

输出一下的结果为:

罗技键盘启动
罗技键盘停止了

Java抽象类的总结的更多相关文章

  1. java抽象类

    Java 抽象类 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类. 抽象类除了不 ...

  2. Java接口、Java抽象类、C++抽象类的区别

    由于这三种数据类型都是为了创建类层次结构的顶层构架,且用法有些许相似之处,这里简单区分一下: 接口: 接口用interface关键字定义, 名字一般使用-able形式的形容词. 接口通常定义抽象方法和 ...

  3. java抽象类与接口的区别及用法

    java抽象类与接口的区别及用法 一.抽象类里面的方法可以有实现,但是接口里面的方法确是只能声明. 二.接口是设计的结果 :抽象类是重构的结果 . 三.java不支持多重继承,所以继承抽象类只能继承一 ...

  4. Java 抽象类与接口总结

    一.为什么要使用抽象类?有什么好处? 抽象类是通用接口.不同的子类可以用不同的方法表示此接口.通用接口建立起一种基本形式,以此表示所有子类的共同部分. 必须覆写父类abstract抽象的方法  含有抽 ...

  5. JAVA抽象类和接口的深入探讨

    Java 语言中,抽象类(abstract class) 和接口(interface) 是抽象思想的两种体现形式.初学者很容易把这两者搞混,所以Java面试中考抽象类和接口的区别的面试题也常有出现的. ...

  6. java抽象类和接口的区别(转载)

    1.Java接口和Java抽象类最大的一个区别,就在于Java抽象类可以提供某些方法的部分实现,而Java接口不可以,这大概就是Java抽象类唯一的优点吧,但这个优点非常有用. 如果向一个抽象类里加入 ...

  7. 我对面向对象设计的理解——Java接口和Java抽象类

    在没有好好地研习面向对象设计的设计模式之前,我对Java接口和Java抽象类的认识还是很模糊,很不可理解. 刚学Java语言时,就很难理解为什么要有接口这个概念,虽说是可以实现所谓的多继承,可一个只有 ...

  8. 第十八节:详解Java抽象类和接口的区别

    前言 对于面向对象编程来说,抽象是它的特征之一. 在Java中,实现抽象的机制分两种,一为抽象类,二为接口. 抽象类为abstract class,接口为Interface. 今天来学习一下Java中 ...

  9. Java抽象类和接口的比较

    一个软件设计的好坏,我想很大程度上取决于它的整体架构,而这个整体架构其实就是你对整个宏观商业业务的抽象框架,当代表业务逻辑的高层抽象层结构 合理时,你底层的具体实现需要考虑的就仅仅是一些算法和一些具体 ...

  10. Java - 23 Java 抽象类

    Java 抽象类 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类. 抽象类除了不 ...

随机推荐

  1. [转载] 构造linux 系统下免密码ssh登陆  _How to establish password-less login with SSH

    In present (post production) IT infrastructure many different workstations, servers etc. have to be ...

  2. 各大IT技术博客排行榜

    cnblogs 积分排名前3000名 http://www.cnblogs.com/ 左侧有推荐博客排行 cppblog http://www.cppblog.com/AllBloggers.aspx ...

  3. Canvas 最佳实践(性能篇)

    Canvas 想必前端同学们都不陌生,它是 HTML5 新增的「画布」元素,允许我们使用 JavaScript 来绘制图形.目前,所有的主流浏览器都支持 Canvas. Canvas 最常见的用途是渲 ...

  4. 2分钟 sublime设置自动行尾添加分号并换行:

    18:03 2016/4/162分钟 sublime设置自动行尾添加分号并换行:注意:宏文件路径要用反斜杠/,2个\\会提示无法打开宏文件.不需要绝对路径很简单利用宏定义:1.录制宏:由于是录制动作宏 ...

  5. PLSQL配置新的oracle实例

    在Win环境下的Oracle中,D:\Oracle\product\10.1.0\db_1\NETWORK\ADMIN\tnsnames.ora文件很重要,它作用是:本地命名的配置.本地名可以用简单的 ...

  6. 怎么取得dropdownlist选中的ID值

    把数据库绑定在dropdownlist中,然后把选中的dropdownlist的项的ID值保存在另外的一个数据库中.怎么取得dropdownlist选中的ID值呢?? this.DropDownLis ...

  7. 模块化管理工具兼打包工具 webpack

    webpack 是一个[模块化管理工具]兼[打包工具] 是一个工具(和seajs,requirejs管理前端模块的方式是不一样) 在webpack一个文件就是一个模块! seajs,requirejs ...

  8. C# Listview 数据绑定

    今天搞Winform,有串数据需要绑定到TabControl里面,原来用datatable,组长说这玩意会有问题不让用,菜鸟实在不会,百度查的Listview用法,写了个数组进去绑定 using Sy ...

  9. 【转】Polya定理

    转自:http://endlesscount.blog.163.com/blog/static/82119787201221324524202/ Polya定理 首先记Sn为有前n个正整数组成的集合, ...

  10. 三、jquery操作DOM

    DOM(Document Object Model, 文档对象模型)为文档提供了一种结构化的表示方法,通过该方法可以改变文档的内容和展示形式.在实际运用中,DOM更像是桥梁,通过它可以实现跨平台.跨语 ...