Java 抽象类和接口的理解
Java 抽象类和接口的理解
一、抽象类
为什么使用抽象类(个人理解):
面向对象的概念是,我们知道的所有的对象都是通过类来描绘的,如果类包含的信息不能描绘一个具体的对象,就需要抽象来解决了,意思是一切事物看上去不同,但本质上相同的具体概念的抽象。例如:三角形或四角形,具体概念上他们是不同的,但是又同属于形状这样的概念,而形状无法用具体概念来对应解释,所以形状就是一个抽象的概念。
抽象类是把一个或多个固定行为抽象描述,而这一个或多个行为可能有任意的具体实现,而这些具体实现是抽象类的派生类,派生类依赖一个固定的抽象类。
抽象类的意义:
1)为子类提供一个公共的类型
2)封装子类中的重复内容(成员变量和方法)
3)定义有抽象方法,子类虽然有不同实现,但该方法的定义是一致的。
特点:
抽象方法:由abstract修饰的方法为抽象方法,抽象方法只有方法的定义,没有方法的实现
抽象方法不能被private、static、final或native并列修饰,只能被public、protected修饰 (如果为private则没有意义,因为子类无法继承,子类无法实现)
抽象类:由abstract修饰的类为抽象类,
抽象类的抽象方法可以存在也可以不存在,抽象方法一定存在抽象类中
抽象类不能被创建,因为没有意义(抽象类方法只有定义没有实现)
抽象类不能被实例化
抽象类的子类需要重写父类所有抽象方法,否则子类还是抽象类
抽象类父类已有具体实现的方法,子类可重写也可以直接引用
抽象类不能被final修饰,也就是说abstract不能与final并列修饰同一个类
抽象类的子类是一般类,则不能与父类抽象方法同名
二、接口
特点:
接口所有方法都是抽象方法,只有声明,没有实现
接口所有方法都是public类型
接口的实现,必须通过子类,子类使用关键字implements,而且接口可以多实现
一个类可以继承抽象类实现接口
接口不能继承抽象类,但是可以通过extends关键字继承多个接口,实现接口的多继承
接口的变量会被隐式指定为public abstract final变量(并且只能public abstract final变量,用private修饰会编译报错)
抽象类与接口的区别:
语法层次:
1)方法区别,抽象类可以拥有抽象方法和拥有非抽象方法,但是接口只能有抽象方法(public abstract方法)
2)变量区别,抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的
3)静态方法和静态代码块区别,抽象类可以有静态代码块和静态方法,而接口中不能含有静态代码块以及静态方法
4)子类区别,只能继承一个抽象类,但是可以实现多个接口
1.如何定义抽象类?
被abstract修饰的类为抽象类
For Example:
abstract class User{}
都知道一个创建类只能有一个public类名,所以可以这么写:
public abstract class User{}
2.如何定义抽象方法?
被abstract修饰的方法为抽象方法
For Example:
public abstract class User{
public abstract void test();
}
以上可以看出,我并没有在抽象类里面写抽象方法,说明抽象类可存在也可不存在抽象方法。
间接说明了,创建抽象类,如果没有抽象方法,那么该抽象类,创建出来并没有任何意义。
而且抽象类需要被继承,如果不继承,那么抽象类如同没有
Java 抽象类和接口的理解的更多相关文章
- Java 抽象类与接口总结
一.为什么要使用抽象类?有什么好处? 抽象类是通用接口.不同的子类可以用不同的方法表示此接口.通用接口建立起一种基本形式,以此表示所有子类的共同部分. 必须覆写父类abstract抽象的方法 含有抽 ...
- JAVA抽象类和接口的深入探讨
Java 语言中,抽象类(abstract class) 和接口(interface) 是抽象思想的两种体现形式.初学者很容易把这两者搞混,所以Java面试中考抽象类和接口的区别的面试题也常有出现的. ...
- 第十八节:详解Java抽象类和接口的区别
前言 对于面向对象编程来说,抽象是它的特征之一. 在Java中,实现抽象的机制分两种,一为抽象类,二为接口. 抽象类为abstract class,接口为Interface. 今天来学习一下Java中 ...
- Java抽象类和接口的比较
一个软件设计的好坏,我想很大程度上取决于它的整体架构,而这个整体架构其实就是你对整个宏观商业业务的抽象框架,当代表业务逻辑的高层抽象层结构 合理时,你底层的具体实现需要考虑的就仅仅是一些算法和一些具体 ...
- java抽象类与接口区别
java抽象类与接口区别: abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力. abstr ...
- Java抽象类和接口的区别(好长时间没看这种文章了)
Java抽象类和接口的区别(好长时间没看这种文章了) abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的 ...
- java抽象类与接口的区别及用法
java抽象类与接口的区别及用法 一.抽象类里面的方法可以有实现,但是接口里面的方法确是只能声明. 二.接口是设计的结果 :抽象类是重构的结果 . 三.java不支持多重继承,所以继承抽象类只能继承一 ...
- 记录:JAVA抽象类、接口、多态
JAVA抽象类.接口.多态 1. 多态 定义 多态是同一个行为具有多个不同表现形式或形态的能力.(多态就是同一个接口,使用不同的实例而执行不同操作) 如何实现多态 继承和接口 父类和接口类型的变量赋值 ...
- Java——抽象类与接口的前世今生
该系列博文会告诉你如何从入门到进阶,一步步地学习Java基础知识,并上手进行实战,接着了解每个Java知识点背后的实现原理,更完整地了解整个Java技术体系,形成自己的知识框架. 1.抽象类: 当编写 ...
随机推荐
- 可以学习相关框架【转:https://testerhome.com/topics/6283】
https://testerhome.com/topics/6283 单元测试方面(Java): Junit:本来想用我熟悉的testng,但是开发的同学说测试springmvc只能用Junit.所以 ...
- 洛谷P2814 家谱(gen)
题目背景 现代的人对于本家族血统越来越感兴趣. 题目描述 给出充足的父子关系,请你编写程序找到某个人的最早的祖先. 输入输出格式 输入格式: 输入由多行组成,首先是一系列有关父子关系的描述,其中每一组 ...
- poj - 3686 The Windy's (KM算法)
题意:n个订单和m个生产车间,每个订单在不同的车间生产所需要的时间不一样,并且每个订单只能在同一个车间中完成,直到这个车间完成这个订单就可以生产下一个订单.现在需要求完成n个订单的平均时间最少是多少. ...
- CF723E(欧拉回路)
题意: 给出一个有向图,要求给每条边重定向,使得定向后出度等于入度的点最多,输出答案和任意一种方案. 分析: 将图看作无向图,对每条边重定向 首先我们肯定分成多个连通分量来考虑,每一个连通分量都是一个 ...
- Java调用WSDL接口
1.首先准备jar包: 2.代码调用如下: String url="url地址"; QName qName=new QName("命名空间","接口名 ...
- 在Studio中使用Access数据库时,提示“未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序”
错误提示:
- No module named '_sqlite3'问题解决
Centos自带的python版本是2.7的,后面我自己装了3.5版本的,在创建应用的时候python manager.py startapp users 时,就会报No module named ' ...
- 使用MySQL Workbench进行数据库设计——MySQL Workbench用法总结
转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/48318877 本文出自[我是干勾鱼的博客] 1 简单介绍 MySQL Workb ...
- Android Studio一些简单设置
简单设置 1.默认主题设置 默认的 Android Studio 为灰色界面,能够选择使用炫酷的黑色界面. Settings --> Appearance --> Them ...
- 基于编程人员Python学习第一章节
基于廖雪峰的python零基础学习后,自我总结.适用于有一定基础的编程人员,对我而言,则是基于.net已有方面,通过学习,记录自我觉得有用的地方,便于后续回顾. 主要以快速定位内容,通过直观代码输入输 ...