java面向对象_抽象类和接口
一、抽象类
1.抽象方法:由abstract修饰、只有定义没有方法体、用一个分号结尾。
2.抽象类:
1)包含抽象方法的类必须是抽象类
2)由abstract修饰
3)不能被实例化
4)抽象类如果不被继承,就没有什么意义;一个类继承抽象类,必须重写起抽象方法(除非该类也声明为抽象类)
abstract class Shape{ //声明抽象类
private double c;
public Shape(double c){
this.c = c;
}
public abstract double area(); //抽象方法
}
3.抽象类的意义
3.1)父类的意义
3.1.1)封装所有子类共有的数据和行为
3.1.2)位所有子类提供一个公共类型
3.2)包含抽象方法
为所有子类提供了统一的入口
二、接口
1)这是一个标准、一个规范;实现了接口就能干某事
2)只能包含常量和抽象方法
3)由interface修饰
4)接口不能被实例化
5)接口是需要被实现/继承的,实现类/子类,必须重写接口中的所有抽象方法。
interface Inter1{
void a();
void b();//默认为public abstract修饰
}
class Aoo implement Inter1{ //实现
public void a(){...}
public void b(){...}
}
6)一个类可以实现多个接口,用逗号隔开;可以又继承又实现,但是要先继承再实现。
7)接口间可以继承
三、抽象类与接口的区别
1、成员区别
(1)抽象类:可以包含——变量、常量;抽象方法、非抽象方法
(2)接口:只能包含常量、抽象方法
2、关系区别
(1)类与类
继承为单继承
(2)类与接口
实现:单实现、多实现
(3)接口与接口
继承为 单继承、多继承
3、设计理念区别
(1)抽象类:被继承体现的是“is a”的关系。抽象类中定义的是该继承体系共性功能。
(2)接口:被实现体现的是“like a”的关系。接口中定义的是该继承体系扩展功能。
java面向对象_抽象类和接口的更多相关文章
- Java面向对象_抽象类、接口
一.抽象类 概 念:很多具有相同特征和行为的对象可以抽象为一个类:很多具有相同特征和行为的类可以抽象为一个抽象类 关键字:abstract 规 则:1.抽象类可以没有抽象方法,有抽象方法的类必 ...
- Java面向对象之抽象类,接口
抽象类: 含有抽象方法的类被声明为抽象类 抽象方法由子类去实现 含有抽象方法的类必须被声明为抽象类 抽象类被子类继承,子类(如果不是抽象类)必须重写抽象类中的所有抽象方法 抽象方法: 声明而未被实现的 ...
- Java面向对象_抽象类应用——模板方法模式
概念:定义一个操作中的算法的骨架,而将一些可变部分的实现延迟到子类中.模板方法模式使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定的步骤. 去个例子分析一下这个概念: public cla ...
- java基础(四)-----抽象类与接口
抽象类与接口是java语言中对抽象概念进行定义的两种机制,正是由于他们的存在才赋予java强大的面向对象的能力.他们两者之间对抽象概念的支持有很大的相似,甚至可以互换,但是也有区别. 一.抽象类 我们 ...
- Java基础之抽象类与接口
Java基础之抽象类与接口 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相似的地方,又有太多不同的地方.很多人在初学的时候 ...
- java 8中抽象类与接口的异同
1.java 8中抽象类与接口的异同 相同点: 1)都是抽象类型: 2)都可以有实现方法(以前接口不行): 3)都可以不需要实现类或者继承者去实现所有方法,(以前不行,现在接口中默认方法不需要实现者实 ...
- Java 中,抽象类与接口之间有什么不同?
Java 中,抽象类和接口有很多不同之处,但是最重要的一个是 Java 中限制一个 类只能继承一个类,但是可以实现多个接口.抽象类可以很好的定义一个家族类 的默认行为,而接口能更好的定义类型,有助于后 ...
- 十、Java基础---------面向对象之抽象类与接口
抽象类(abstract) 当编写一个类时,时常会为该类定义一些方法,这些方法的使用用以描述该类的行为方式,那么这些方法都有具体的方法体.但是在某些情况下,某个父类只是知道子类应该包含怎样的方 ...
- Java:【面向对象:抽象类,接口】
本文内容: 抽象类 接口 抽象类与接口的异同 首发日期:2018-03-24 抽象类: 虽然已经有了父类,但有时候父类也是无法直接描述某些共有属性的,比如哺乳类和人类都会叫,而一般来说哺乳类这个父类并 ...
随机推荐
- CSS样式自动换行(强制换行)与强制不换行
自动换行问题,正常字符的换行是比较合理的,而连续的数字和英文字符常常将容器撑大,挺让人头疼,下面介绍的是CSS如何实现换行的方法 对于div,p等块级元素,正常文字的换行(亚洲文字和非亚洲文字)元素拥 ...
- 如何使用JS来检测游览器是什么类型,或android是什么版本号- 转载
var brower = { versions:function(){ var u = window.navigator.userAgent; var num ; if(u.indexOf('Trid ...
- Java NIO工作原理
数据通信流程: 通过selector.select()阻塞方法获取到感兴趣事件的key,根据key定位到channel,通过channel的读写操作进行数据通信.channel的read或者write ...
- Rails 实现多对多自连接
1. 先生成关联代码 class WorkConnect < ActiveRecord::Base belongs_to :working, class_name: "Company& ...
- C#夯实基础系列之const与readonly
一.const与readonly的争议 你一定写过const,也一定用过readonly,但说起两者的区别,并说出何时用const,何时用readonly,你是否能清晰有条理地说出个一二三 ...
- sql server日期时间转字符串
一.sql server日期时间函数Sql Server中的日期与时间函数 1. 当前系统日期.时间 select getdate() 2. dateadd 在向指定日期加上一段时间的基 ...
- js函数中this的不同含义
1.js函数调用过程中,js线程会进入新的执行环境并创建该环境的变量对象,并添加两个变量:this和arguments,因此可以在函数中使用这两个变量.需要注意的是,this变量不能重新赋值,而arg ...
- Sublime Text永久设置使用4个空格缩进
Sublime Text是一款轻量高效的代码编辑器,官网地址是:http://www.sublimetext.com/,默认情况下sublime是使用tab进行缩进,如果手动敲空格是比较麻烦的,并且很 ...
- iframe使用方法
--点击按钮会把地址里的页面显示在oframe里,对iframe可以设置宽和高<iframe src="demo_iframe.htm" name="iframe_ ...
- SQL的ROW_NUMBER函数
with tabs as ( select ROW_NUMBER() over(partition by customerID order by totalPrice) as rows,custome ...