java笔记之抽象类和接口
前言
正文
1.抽象类
客观存在的一类事物,当这类事物都是抽象的,无法具体的描述。
1)语法:
修饰符 abstract class 类名{
}
2)特点:
抽象类是一个不具体的类
抽象类可以包含不具体的行为
是一个规范,用来约定子类或者小类型的行为
3) 抽象类的特性
抽象类不能进行实例化
使用abstract关键字定义抽象类
抽象类中的抽象方法也需要用abstract修饰,同时不能存在方法体
抽象类中不一定有抽象方法
有抽象方法的类,一定是抽象类
如果子类继承了抽象类,那么子类必须实现抽象类的抽象方法;如果子类继承了抽象类,而不去实现抽象类,子类也必须为抽象类
如果抽象类中没有定义构造器,那么javac会自动加上默认构造器;如果抽象类中有了有参构造器,且没声明无参构造器,那么在子类构造器中需要显式的调用抽象类的构造器。
4)抽象类的使用场景
抽象类用于分析和设计的工具
抽象类是一个规范,用来约束子类
5)抽象类与类的区别:
1)相同点:
语法上都要使用class关键字
都包含属性和方法
都可以进行方法的重载
如果没有提供构造器,那么javac会自动加上
子类都可以重写父类的方法
具体的子类在创建对象时,都需要调用父类的构造器
都可以定义引用来指向子类或小类型所创建的对象(多态)
多可以被抽象类和具体类所继承
2))不同点
抽象类不能进行实例化
抽象类可涵有抽象的方法
2.javaBean规范:(针对实体类)
是一种编程习惯。按照此规范定义出来的java类使用起来比较方便。
1)内容:
必须有包
必须为属性提供getter和setter
必须提供无参构造器
实现序列化(I/O流)
重写hashCode(),eqauls(),toString()
3.接口:
是一种规范和约束,用来限定实现类里面包含的行为
1)目的:
为了解决java单继承的弊端。同时区分出解决问题的中心
2)语法:
Interface 接口名{
接口内容(常量、抽象方法)
}
注:类实现接口的语法:
修饰符 class 类名 implements 接口1,接口2{
类体
}
3)接口的特性:
接口不能实例化(除非是有匿名内部类实现它)
接口中包含的方法全都是抽象方法,属性均为常量(public static final 数据类型 变量名=值)
4)接口可以多继承接口
语法:
Interface 接口名 extends 接口1,接口2{
接口体
}
5)借口可以定义变量引用指向实现类的对象(接口的多态)
注:接口可以作为变量、参数和返回值来引用实现类的对象
4.软件的设计原则:
高内聚,低耦合
高内聚:在类内部,关联度越高越好
低耦合:在类与类之间,关联度越低越好
1)实现方式:
高内聚:一个类只做一件事
低耦合:面向接口编程
注:面向接口编程:
在软件开发过程中,在类中调用另一个类的方法。他们之间的关联度很高;那么可以使用接口替代类,减低他们之间关联度(可进一步采用工厂模式来屏蔽对象的创建过程)
5.面向接口的编程步骤:
1)抽取接口:
注:根据名词中存在的相同的行为i,根据is-a关系去建立,根据系统的重点研究对象来确定使用继承(抽象类、类)或实现(接口)
2)定义接口:
将使用的行为在接口中定义出来,形成规范和约束
3)建立实现类并实现接口
注:好处,提高了系统的可扩展性和可维护性。
总结
转载于:https://www.cnblogs.com/zhang_kun_nan/p/3636488.html
java笔记之抽象类和接口相关推荐
- Java笔记:抽象类和接口
Java笔记:抽象类和接口 抽象类 接口 接口多重实现 接口继承接口 嵌套接口 工厂模式 抽象类 在普通类中,一个类必须实现自身写的所有方法,每个方法必须含有自己的方法体.即便先创建一个父类,再由后续 ...
- Java自学笔记——Java面向对象——04.抽象类、接口、内部类
Java 面向对象各节 Java自学笔记--Java面向对象--01.回顾方法 Java自学笔记--Java面向对象--02.构造器.类和对象 Java自学笔记--Java面向对象--03.封装.继承 ...
- Java提高篇 —— 抽象类与接口
一.前言 接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法. 抽象类与接口是java语言中对抽象概念进行定义的两种机制,正是由于他们的存在才赋予java强大的面向对象的能力.他们两者之间 ...
- Java 中的抽象类和接口
Java 中的抽象类和接口 1.参考资料 深入理解Java的接口和抽象类 Java抽象类与接口的区别 2.前言 有一次旁听面试的时候,听到面试官问了一句:既然 JDK8 中接口有了默认方法实现,那接口 ...
- Java中类、抽象类、接口之间的区别和联系。
Java中类.抽象类.接口之间的区别和联系. 程序设计所面对的问题域--客观世界,是由许多事物构成的,这些事物既可以是有形的(比如一辆汽车),也可以是无形的(比如一次会议).把客观世界中的事物映射到面 ...
- 【java笔记】常用函数式接口(4):Funtion接口
[java笔记]常用函数式接口(1):Supplier接口_m0_52043808的博客-CSDN博客 [java笔记]常用接口(2):Consumer接口_m0_5204 ...
- 【java笔记】常用函数式接口(1):Supplier接口
[java笔记]常用接口(2):Consumer接口_m0_52043808的博客-CSDN博客 [java笔记]常用函数式接口(3):Predicate接口_m0_52043808的博客-CSDN博 ...
- Java复习之抽象类和接口
Java复习之抽象类和接口 Java复习之抽象类和接口 什么是抽象类和接口 抽象类与接口的区别 什么情况下使用抽象类或接口 一个demo引起来的对于java方法区堆栈的研究 首先我们需要明白抽象类与接 ...
- JAVA中的抽象类与接口
JAVA中的抽象类与接口 接口和抽象类的区别: 接口和抽象类是支持抽象类定义的两种机制. 接口是公开的,不能有私有的方法或变量,接口中的所有方法都没有方法体,通过关键字interface实现. 抽象类 ...
最新文章
- 看懂三篇文章--需要归纳
- [导入]IIS无法显示asp页面
- 我眼中的Linux设备树(三 属性)
- 浙江理工大学2019年4月赛
- 求矩阵中各列数字的和 Exercise08_01
- 浅析软件项目管理中十个误区(来自:http://manager.csdn.net/n/20051213/30907.html)
- 数据结构—平衡二叉树
- html进阶css(5)
- 寻找两个正序数组中的中位数 数组
- worldwind java 教程,如何脱机使用World Wind Java SDK
- 空间中直线到平面的距离的公式是什么?
- 集成开源技术的性能监控平台
- 删库跑路(错误0x80070091:目录不是空的)该如何解决???还是别解决了。。。
- PhotoshopCC2019(64位)下载+安装教程
- 学区摇号软件设计_重学 Java 设计模式:实战观察者模式「模拟类似小客车指标摇号过程,监听消息通知用户中签场景」...
- java编辑遗忘曲线代码,【软件工具篇02】使用Anki克服遗忘曲线
- 今日闲谈:为何国产动画能在抖音异军突起?
- think php 后门,看我如何调查放置后门之Thinkphp
- 情感溢出:读《浣溪沙》
- cloudflare免费设置_Cloudflare 设置教程 | 利用cloudflare提速外贸网站
热门文章
- 2021-03-31 Matlab simulink 模糊PID在无刷直流电机中的应用
- c语言双分支结构运算符,c语言——运算符、分支结构、循环结构
- java comet_用java实现comet,基于 HTTP长连接的实现,用于从服务端实时发送信息到客户端...
- 谁是最强的女汉子_JAVA
- Java 守护线程概述
- 论面向组合子程序设计方法 之 oracle
- [译]解密 Uber 数据科学团队路径选择算法的优化之路
- Oracle编程入门经典 第4章 新9i示例模式
- 极大似然法估计与极大验后法估计
- 程序员面试题精选100题(51)-顺时针打印矩阵[算法]