第十一讲:面向对象编程(六)

玉不琢,不成器;人不学,不知道。 ——礼记·学记

本讲内容:接口

Java中只支持单继承,即一个类只能有一个父类。为了提供类似多重继承的功能,Java提供了接口(Interface)机制。但接口不仅仅是为了解决多重继承问题才出现的。接口拥有多重继承的好处,而且没有多重继承的缺点---多重继承的缺点全部来源于实现全部继承,关键在于接口只有abstract(默认、不用写)方法和常量。

譬如下面例子:有些动物和不能和人亲近玩耍的,不能继承。

<span style="font-size:18px;">class Animal{
	public void eat() {
		System.out.println("吃");
	}
	public void sleep() {
		System.out.println("睡");
	}
}
interface Pet{
	void play();
}
class Tiget extends Animal{}
class Cat extends Animal implements Pet{
	public void play() {
		System.out.println("猫是可以亲近玩耍的");
	}
}
public class danmei {
	public static void main(String[] args) {
		Cat a=new Cat();
		a.eat();
		a.sleep();
		a.play();
	}
}</span>

运行的结果是:

吃
睡
猫是可以亲近玩耍的

注意:

1、接口名用 interface 修饰, 相对应的 类名用 class修饰

2、接口里定义的方法都是抽象方法,可以用abstract修饰,当然也可以不用它修饰

3、接口只能被实现 ( implements )

4、可以用抽象类实现接口,也就是说虽然实现了,但是没有真正写接口的任何方法,它把责任推给了抽象类的子类

5、普通类实现接口,则必须按照接口的契约,实现接口所定义的所有方法。

6、接口可以继承接口。

7、一个接口可以继承多个父类,也就是说一个接口之间可以多重继承。

时间: 2024-11-07 17:50:57

第十一讲:面向对象编程(六)的相关文章

第11讲——面向对象编程

面向对象编程(OOP)的重要特性: 抽象 封装和数据隐藏 多态 继承 代码的可重用性 为了实现这些特性并将它们组合在一起,C++做出的最重要的改进--提供了类. 我们之前学的C语言时都是进行的过程性编程,而现在学的C++却是面向对象编程. 下面我们看一个例子,它揭示了OOP观点与过程性编程的差别. EDG垒球队的一名新成员被要求记录球队的统计数据.很自然,会求助于计算机来完成这项工作. 如果求助一位过程性程序员,他可能这样考虑: 我要输入每名选手的姓名.击球次数.击中次数.命中率(命中率指的是选

面向对象编程(六)——重载

重载(overload) 方法的重载是指一个类中可以定义有相同的名字,但是参数不同的的多个方法.调用时,会根据不同的参数列表选择对应的方法. 主要“两同三不同”: ①相同: 同一个类,同一个方法名: ②不同:参数列表不同(参数类型.个数.顺序不同) 注:①只有返回值不同的不构成方法的重载. 比如:int a(String str[]) 和void a(String i),调用:a().→→→→你们能识别出调用的是哪个方法吗? ②只有形参的名称不同,不构成方法的重载. ③与普通方法一样,构造方法也

重学C++ (十一) OOP面向对象编程(2)

转换与继承 本节主要须要区分的是: 基类和派生类的转换: 引用(指针)的转换和对象的转换. 1.每一个派生类对象包括一个基类部分.因此.能够像使用基类对象一样在派生类对象上执行操作. 基于这一点,能够将派生类对象的引用(指针)转换为基类子对象的引用(指针),且存在自己主动转换. 反之,基类到派生类的自己主动转换是不存在的,因此基类不包括派生类型的成员.另外,将基类指针或引用绑定到派生类对象时也存在限制,由于编译器编译时无法知道该转换是安全的(编译器确定转换是否合法,仅仅看指针或引用的静态类型).

黑马程序员-----面向对象编程概念

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ----- 第一讲   面向对象编程概念 本小节知识点: 1.[了解]编程的实质是什么? 2.[掌握]面向对象的基本概念 类    包    接口      继承      多态 ( 面向过程是强调我们要做一件事情有哪些步骤, 面向对象是强调我们做一件事

第六章 Python类(面向对象编程)

什么是面向对象编程? 面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构.Python就是这种编程语言. 面向对象程序设计中的概念主要包括:对象.类.继承.动态绑定.封装.多态性.消息传递.方法. 1)对象:类的实体,比如一个人. 2)类:一个共享相同结构和行为的对象的集合.通俗的讲就是分类,比如人是一类,动物是一类. 3)继承:类之间的关系,比如猫狗是一类,他们都有四条腿,狗继承了这个四条腿,拥有了这个属性. 4)动态绑定:在不

java面向对象编程(六)--四大特征之继承、方法重载和方法覆盖

一.继承 1.继承的概念 继承可以解决代码复用,让我们的编程更加靠近人类思维.当多个类存在相同的属性(变量)和方法时,可以从这些类中抽象出父类,在父类中定义这些相同的属性和方法,所有的子类不需要重新定义这些属性和方法,只需要通过extends语句来声明继承父类.语法如下: class 子类 extends 父类 这样,子类就会自动拥有父类定义的某些属性和方法.另外,并不是父类的所有属性.方法都可以被子类继承.父类的public修饰符的属性和方法,protected修饰符的属性和方法,默认修饰符属

进击的Python【第六章】:Python的高级应用(三)面向对象编程

Python的高级应用(三)面向对象编程 本章学习要点: 面向对象编程介绍 面向对象与面向过程编程的区别 为什么要用面向对象编程思想 面向对象的相关概念 一.面向对象编程介绍 面向对象程序设计(英语:Object-oriented programming,缩写:OOP)是一种程序设计范型,同时也是一种程序开发的方法.对象指的是类的实例. 已经被证实的是,面向对象程序设计推广了程序的灵活性和可维护性,并且在大型项目设计中广为应用. 此外,支持者声称面向对象程序设计要比以往的做法更加便于学习,因为它

Go语言学习(十一)面向对象编程-类型系统

1.类型系统介绍 对于面向对象编程的支持Go 语言设计得非常简洁而优雅.简洁之处在于,Go语言并没有沿 袭传统面向对象编程中的诸多概念,比如继承.虚函数.构造函数和析构函数.隐藏的 this 指 针等. 一个典型的类型系统通常包含如下基本内容: 基础类型,如 byte . int . bool . float 等: 复合类型,如数组.结构体.指针等: 可以指向任意对象的类型( Any 类型): 面向对象,即所有具备面向对象特征(比如成员方法)的类型: 接口. 因为Java语言自诞生以来被称为最纯

十六、面向对象编程

面向对象编程类的概念 : 具有相同属性和技能的一类事物人类 抽象对象 : 就是对一个类的具体的描述具体的人 具体 使用面向对象的好处: 使得代码之间的角色关系更加明确 增强了代码的可扩展性 规范了对象的属性和技能面向对象的特点:结局的不确定性 1 def Person(name,sex,hp,ad): 2 # 人模子 3 self = {'name': name, 'sex':sex, 'hp': hp, 'ad': ad} 4 def attack(dog): # 闭包 5 # 人攻击狗 6

c++primer复习(六)—面向对象编程

1 C++中,通过基类的引用(或指针)调用虚函数时,发生动态绑定,两个条件(基类引用或指针.虚函数)缺一不可 虚函数的默认实参将发生静态绑定 2 继承层次的根类一般都需要定义虚析构函数 3 任意非static成员都可以是虚析构函数,static成员函数不能是虚析构函数(应为static成员不是属于某个对象的,而是属于整个类的) 4 protected成员:派生类只能通过派生类对象访问基类的protected成员,派生类对其基类类型对象的protected成员没有特殊的访问权限 private成员