java学习笔记(基础篇)—抽象与接口的区别
抽象与接口的区别
一、抽象(abstract)
1. 抽象方法
1) 作用:定义规范
2) 抽象方法用来描述具有什么功能,但不提供实现。
3) 如果类中一个方法没有实现就要定义一个抽象方法。
2. 抽象类
1)如果类中有抽象方法,该类就必须定义为抽象类。
2)抽象类中不一定有抽象方法,可以包含普通方法、实例变量、构造器;但没有抽象构造器和抽象静态方法。
3)抽象类失去了创建对象的能力,只能提供给子类继承。
4)继承抽象类必须实现其所有的抽象方法,或者子类也定义为抽象类。
5)抽象类和抽象方法不能被final修饰。
二、接口(interface)
1. 接口
1)作用:定义规范,解决多继承问题。
多继承的不足之处:造成代码浪费,引发继承的多义性(即多个父类中可能含有几个命名相同的方法或属性,调用时就不知道使用的是来自哪里)
2)接口是抽象类的抽象,接口的方法都是抽象方法,默认都是public abstract类型。
3)接口的成员变量默认都是常量,被public final static 修饰。
4)接口没有构造器,不能被实例化。
5)接口可以继承多个接口,一个类也可以实现多个接口,达到解决多继承的目的。
欢迎访问我的个人网站www.chlinlearn.cn,最新文章都会首先在那里发布哦^^
java学习笔记(基础篇)—抽象与接口的区别的更多相关文章
- java学习笔记-基础篇
Java基础篇 1—12 常识 13 this关键字 14参数传递 16 继承 17 访问权限 28—31异常 1—12 常识 1.文件夹以列表展示,显示扩展名,在地址栏显示全路径 2.javac编译 ...
- Java学习笔记——基础篇
Tips1:eclipse中会经常用到System.out.println方法,可以先输入syso,然后eclipse就会自动联想出这个语句了!! 学习笔记: *包.权限控制 1.包(package) ...
- java学习笔记(基础篇)—面向对象编程之封装、继承、多态
一. OOP中的基本概念 Java的编程语言是面向对象的,采用这种语言进行编程称为面向对象编程(Object-Oriented Programming, OOP), 它允许设计者将面向对象设计实现为一 ...
- java学习笔记(基础篇)—变量与表达式
一:局部变量和实例变量 定义变量是指设定变量的数据类型和变量的名字,Java语言要求变量遵循先定义,再初始化,然后使用的规则. 作用域:指它的存在范围,只有在这个范围内,程序代码才能访问它. 变量的生 ...
- java学习笔记(基础篇)--java关键字与数据类型
java关键字与数据类型 Java语言的关键字是程序代码中的特殊字符.包括: . 类和接口的声明--class, extends, implements, interface . 包引入和包声明--i ...
- java学习笔记(基础篇)—数组模拟实现栈
栈的概念 先进后出策略(LIFO) 是一种基本数据结构 栈的分类有两种:1.静态栈(数组实现) 2.动态栈(链表实现) 栈的模型图如下: 需求分析 在编写代码之前,我习惯先对要实现的程序进行需求分析, ...
- java学习笔记(基础篇)—java数组
一:什么是数组,什么时候使用数组? 数组是用来保存一组数据类型相同的元素的有序集合,数组中的每个数据称为元素.有序集合可以按照顺序或者下标取数组中的元素. 在Java中,数组也是Java对象.数组中的 ...
- Python学习笔记基础篇——总览
Python初识与简介[开篇] Python学习笔记——基础篇[第一周]——变量与赋值.用户交互.条件判断.循环控制.数据类型.文本操作 Python学习笔记——基础篇[第二周]——解释器.字符串.列 ...
- Java学习日记基础篇(六)—— 抽象类、接口、final
抽象类 为什么要有抽象类? 因为父类方法有不确定性,我们在Animal中定义了一个方法,但是它会被子类的方法覆盖掉,我们就不知道这个方法原本是做什么的 public class test1 { pub ...
随机推荐
- C# Excel导入Access
/// <summary> /// 导入 /// </summary> private void btn_In_Click(object sender, EventArgs e ...
- 不要困在自己建造的盒子里——写给.NET程序员(附精彩评论)
此文章的主旨是希望过于专注.NET程序员在做好工作.写好.NET程序的同时,能分拨出一点时间接触一下.NET之外的东西(例如10%-20%的时间),而不是鼓动大家什么都去学最后什么都学不精,更不是说. ...
- NuGet安装包重新安装
Update-Package -reinstall 引用: https://docs.microsoft.com/zh-cn/nuget/consume-packages/reinstalling-a ...
- jdbc连接oracle数据库字符串
jdbc连接oracle数据库有两种方式: 连接数据库SID 连接数据库service_name 当连接SID时,字符串如下: url::orcl1" password="xxxx ...
- Delphi 7学习开发控件(继承TGraphicControl只画一条线)
我们知道使用Delphi快速开发,很大的一方面就是其强大的VCL控件,另外丰富的第三方控件也使得Delphi程序员更加快速的开发出所需要的程序.在此不特别介绍一些概念,只记录自己学习开发控件的步骤.假 ...
- Win7和Vista的安全机制对于应用程序读取配置文件相关操作的影响(虚拟重定向技术)
今天构造了一个新版本的XXXX软件,并且在纯净的系统下进行了较为全面的测试.测试中也发现了一些问题.其中包括在Win7测试时程序竟然在另一个目录中创建了文件夹和配置文件,并且进行相关读取操作,却并没有 ...
- QT5---应用程序发布(使用windeployqt和NSIS)
采用动态编译的方式发布程序,即release版本. 找齐动态依赖库(.dll) 方法一 用Dependency Walker这个工具去找少了那些dll,不过这个工具也不怎么靠谱,一个比较靠谱但 ...
- QTcpSocket 对连接服务器中断的不同情况进行判定
http://blog.csdn.net/goforwardtostep/article/details/52300335
- 转载几篇文章URL
读了百伯在线Jobbole的几篇文章,转给需要的朋友.如下: 产品小设计大体验:http://blog.jobbole.com/39593/ 苹果是一家有工程师的设计公司:Google是一家有设计师的 ...
- python分布式编程(转)
本文代码转载廖雪峰老师的python3教程 分布式编程的难点在于: 1.服务器之间的通信,主节点如何了解从节点的执行进度,并在从节点之间进行负载均衡和任务调度: 2.如何让多个服务器上的进程访问同一资 ...