abstract抽象
abstract:抽象
是用来修饰抽象类和抽象方法的
那么什么抽象,抽象有究竟有什么用呢??
我们知道,“类”是某一类具有相同特征或行为的物事,是将这些物事特征向上抽取得来的;“父类”也是子类不断向上抽取而来的。
比如人这个“类”,都有说话的功能;人“类”下有很多子类,如“中国人”、“德国人”、“法国”人,其都有各自己的语言,即说话功能各不相同。
也就是说子类的继承父类“说话”功能的同时,都有各自己特殊的说话功能,用代码表示也就是“子类说话功能会覆盖父类说话功能”。
在这样的情况下,在父类中定义说话功能就显得多余了,因为其被所有子类覆盖。
此时,父类的说话功能内容就要以去除,只保留功能定义,并用abstract(抽象)修饰。
用代码表示如下:
public class AbstractDemo {
public static void main(String[] args) {
new Chinese().speak(); //建立子类对象,并调用方法
}
}
// 人都有说话的功能
abstract class People {
abstract void speak(); // 抽象方法只定义基本功能定义,不写功能主体。主体部分由子类复写完成,由子类实现。
}
// 中国人说中文
class Chinese extends People {
void speak() {
System.out.println("speak Chinese");
}
}
// 德国人说德语
class German extends People {
void speak() {
System.out.println("speak German");
}
}
抽象类中的抽象方法,是所有子类所必备具备的,只是各子类的实现方式不一样。父类只提供基本的功能,具体怎么实现则由各子类完成。
功能不确定的,就可以用抽象来
抽象类的特点:
1、抽象方法一定被定义在抽象类串
2、抽象方法、抽象类必须被abstract关键字修饰
3、抽象方法不能用new创建对象,因为调用抽象方法没有意义
4、抽象类中的抽象方法要被使用,必须由子类复写其所有的抽象方法后,再建立子类对象调用。如果子类只复写了部分抽象方法,那些该子类一个抽象类
抽象类可以有抽象方法,也可以有非抽象方法;也可以没有抽象方法。
父类中的抽象方法,在子类中必须复写。达到父类强制子类完成其功能。
抽象类与一般类的区别:
无太大的区别,该如何描述事物就如何描述。只不过,该事物中出现了一些不确认的东西。这些不确认的东西,也是访一事物的功能,需要确认体现,但无法定义功能主体。
抽象类比一般类多了抽象方法。
抽象类不能被实例化。
abstract抽象的更多相关文章
- 抽象鸡类 abstract(抽象) base(基础) class(类型)
# --> ''' class interface 接口: 建立关联的桥梁, 方便管理代码 (python中没有接口语法) 接口类: 用来定义功能的类 为继承它的子类提供功能 该类的功能法方法一 ...
- php中关于抽象(abstract)类和抽象方法的问题解析
在面向对象(OOP)语言中,一个类可以有一个或多个子类,而每个类都有至少一个公有方法作为外部代码访问的接口.而抽象方法就是为了方便继承而引入的,现在来看一下抽象类和抽象方法分别是如何定义以及他们的特点 ...
- java抽象、接口 和final
抽象 一.抽象类:不知道是具体什么东西的类. abstract class 类名 1.抽象类不能直接new出来. 2.抽象类可以没有抽象方法. public abstract class USB { ...
- java中abstract详解
Abstract(抽象)可以修饰类.方法 如果将一个类设置为abstract,则此类必须被继承使用.此类不可生成对象,必须被继承使用. Abstract可以将子类的共性最大限度的抽取出来,放在父类中, ...
- 基础知识系列☞Abstract和Virtual→及相关知识
转载地址→http://www.cnblogs.com/blsong/archive/2010/08/12/1798064.html 在C#的学习中,容易混淆virtual方法和abstract方法的 ...
- 尚学堂 JAVA Day13 abstract 关键字
Abstract (抽象的) 这是一个关键字. 可以且只可以 用来修饰 <类> <方法>. 1---Abstract 类 如:Animal,可以被理解一个抽象的类.动物嘛,只是 ...
- 三大修饰符static,final,abstract,接口和抽象类的区别
package com.cityhero.test; public class ThreeModifier { //static静态的 // 概念:static可以修饰方法和属性,被static修的方 ...
- 面向对象_06【抽象类:abstract、接口:interface、实现:implements】
抽象类:abstract抽象:没有足够的描述功能,事物不具体的描述,却又有共性. 特点: 1,方法只有声明没有实现时,该方法就是抽象方法,需要被abstract修饰,抽象方法必须定义在抽象类中,该类也 ...
- 逆袭之旅.DAY07东软实训..封装~继承~抽象~final
2018年7月3日.逆袭之旅DAY07 package day0703.exam1; /** * 狗狗类 使用权限修饰符private和public进行封装 * @author Administrat ...
随机推荐
- Python多进程并发操作进程池Pool
目录: multiprocessing模块 Pool类 apply apply_async map close terminate join 进程实例 multiprocessing模块 如果你打算编 ...
- rails 部署 can't find gem bundler (>= 0.a) with executable bundle
多方寻找终得果,先感谢原作者,原作者博文 原因是本地项目bundler 和 服务器 bundler 版本不一致导致,项目是在本地建立,故Gemfile.lock最后一行BUNDLED WITH中是1. ...
- 前端之javascript的数据类型1和BOM对象
一 js对象 BOM对象:browser object model浏览器模型对象 window对象:定时器 DOM对象:文档对象模型 js对象:字符串对象,数组对象,日期对象,math对象 new关键 ...
- 【转】【MySQL】时间类型存储格式选择
一 前言 昨天在给开发同学做数据库设计规范分享的时候,讲到时间字段常用的有三个选择datetime.timestamp.int,应该使用什么类型的合适?本文通过三种类型的各个维度来分析,声明:本文 ...
- Amount of Degrees(数位dp)
题目链接:传送门 思路:考虑二进制数字的情况,可以写成一个二叉树的形式,然后考虑区间[i……j]中满足的个数=[0……j]-[0……i-1]. 所以统计树高为i,中有j个1的数的个数. 对于一个二进制 ...
- SVD(6.5.1定理证明观察3)
- pyinstaller基本操作
pyinstaller 打包错误http://www.fmwei.com/linux/pyinstaller-lib-error.html 只需要复制python安装目录下的动态库到系统地动态库目录即 ...
- C语言编程题
1.将整形a的第m位赋值到整形b的第n位 int fun4(int a, int m, int b, int n) { a = (a>>m) & ;//将a的第m位取出,为1或0, ...
- 实战fortran77基础语法2
由于大量的接触fortran77,先学习fortran77吧 1.fortran不区分大小写,fortran77一般全部大写,感觉没必要,不好读,还是用大小写混合着写吧.后缀 .for 为固定格式的代 ...
- IntelliJ IDEA 2017版 spring-boot 2.03后 Pageable用法;Pageable用法,PageRequest过时,新用法;Pageable过时问题;
1.旧版本Pageable用法: 但是会显示,这个版本已经过时,这时可以查看源码. 一般,一个方法过时,就会在其附近形成一个新的同名的但是其他用法的方法.按照这个理念,来找这个源码.很幸运,蒙对了,我 ...