Java类、对象与接口
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
▪ 存取权限设置不当,直接暴露信息,破坏了类的封装原 则
“遵循封装”示例 ObjectTest ——Dog类/DogTest测试类
▪ 创建存取方法,并强制程序必须通过方法进行数据访问
存取方法的命名习惯:setter和getter方法
封装实现了“数据隐藏”
封装基本原则
1
将成员变量标记为 私有private 提供setter和getter存 取方法,标记为 公开public
animal = new Cat();
animal.shout();
此时,指向Cat类对象 调用Cat类对象shout方法
public class Cat implements Animal{
public void shout(){ System.out.println(“喵喵喵….”); } }
自然世界
人类
张三、李四 …
个体
Java世界
Person class
Person
对象
二、面向对象的三个特征
面向对象程序设计的三大特征:
▪ 封装
▪ 继承
▪ 多态
2.1特征I——封装(Encapsulation)
“破坏封装”示例 ObjectTest Project——BagDog类/BagDogTest测试类
3.2 接口的声明与使用
Java接口采用Interface来定义
▪ 以下定义一个名字叫“Animal”的接口,接口中只声明 了一个shout()方法原型,无具体实现 public Interface Animal{ public void shout();
}
程序中不能像使用具体类那样直接使用(实例化 )接口
InterfaceTest Project —Animal/Dog/Cat
通过接口可以实现多重继承,一个类只能继承( extends)一个父类,但可以实现(implements )多个接口 “接口”和“实现”之间是一种“特殊的继承关 系” public class 类名 extends 父类 implements 接口1,接口2…
Java类、对象与接口
本篇内容
回顾Java类和对象 回顾面向对象三个特征
Java接口概念
Java接口与多态的关系 面向接口编程
一 回顾Java类和对象
在Java世界里,万物皆对象
▪ Everything is Object
面向对象程序的思维方式
▪ 尽量按照人类的自然思维方式来看待和解决问题
public class Cat implements Animal{ Cat实现
Animal接口 } } public void shout(){ System.out.println(“喵喵喵….”);
接口与实现
Animal shout()
Dog shout()
Cat
shout()
接口和实现示例
“面向接口编程”是一项重要的面向对象设计原 则,遵循“面向接口编程”原则,可以增强程序 (系统)的灵活性和扩展性 程序(系统)采用接口,可以通过更换接口的实 现类,以达到“灵活更换程序(系统)实现”的 目的
理解面向接口编程—回顾Servlet API
Servlet API:Sun公司定义了一套专门用于开发 Servlet程序的Java类和接口,这些类和接口提供 Servlet程序开发所涉及的各种功能,统称为Servlet API.
使用接口:
▪ 声明时采用接口类型,其指向为具体实现类对象 ▪ 运行时,根据其指向的具体对象类型,动态调用相应方 法 InterfaceTest Project —AnimalTest
Animal animal = new Dog(); animal.shout(); // 调用Dog对象的shout方法
多态示例II
问题需求
开发一个DogHouse,里面有
各种类型的Dog,设计一个 方法可以依次听到所有 Dog 的叫声
ObjectTest Project— DogHouse/DogHouseTest
多态现象的产生,除了通过创建对象时父类对象 引用 指向具体子类对象之外,还可以通过方法参 数和方法返回值的形式:
PekingDog dog = new PekingDog();
还可以这样创建(PekingDog类继承自Dog类)
Dog dog = new PekingDog();
父类对象 子类对象 Dog类对象引用变量指向PekingDog对象
当父类对象引用变量指向了子类对象,在程序运 行时,将根据其指向的子类对象类型,动态调用 子类对象的相应方法,产生出“多态”现象
}
public class Dog implements Animal{ Dog实现 Animal接口 }
public void shout(){
System.out.println(“汪汪汪….”);
public Interface Animal{ }
public void shout(); }
3.3 接口与多态
多态:
▪ 同样一个方法调用,可以有不同的具体表现形态 ▪ 多态的实现:通过将父类对象引用变量指向子类对象, 来实现动态的方法调用
通过接口,是Java程序中实现多态的常见形式
▪ 接口是一种“特殊的父类”
▪ 接口中的方法都没有实现,强制要求在实现了接口的具 体子类中必须重写
四、面向接口编程
接口的使用形式:
▪ 声明时采用接口,指向实现该接口的具体类对象 ▪ 方法参数为接口类型,可以传递任意实现该接口的具体 类对象 ▪ 方法返回值为接口类型,可以返回任意实现该接口的具 体类对象
示例
InterfaceTest Project —AnimalShouter/AnimalShouterTest
▪ 多态示例I ObjectTest —DogTest3
运行时判断指向HuskyDog类 public class HuskyDog extends Dog{ 对象,调用HuskyDog类对象 重写的bark方法 public void bark(){
System.out.println(“嗷呜~”); } Dog dog = new HuskyDog(); } dog.bark();
“继承”的意义
1
避免重复程序代码 提高复用 定义出共同的协议 产生多态
2
“继承”使得某个父类型之下的所有子类都会有 父类型所持有的方法
▪ 即:通过继承,定义了相关类之间的共同协议
位于某个父类型之下的所有子类都能够执行“共 同协议”所规定的这些动作
▪ 父类对象能做的事,子类对象也能做,具体如何做,由 子类来决定(可以重写动作的具体实现) ▪ 子类与父类之间是一种“is a”关系;可以把子类当做 父类来使用
继承示例
ObjectTest —PekingDog/HuskyDog/BoltDog/DogTest2
Dog height name bark()
PekingDog没有 特殊行为
PekingDog
HuskyDog bark()
BoltDog
bark()
被子类覆盖的方法
其它继承示例:
▪ 在Java中,所有类都是从Object这个(根)类继承而来 ▪ Web编程中,程序员开发的Servlet继承自HttpServlet类
2
2.2特征II——继承(inheritance)
继承的定义:继承是一个类可以获得另一个类的 特性的机制
▪ 存在继承关系时,现有类称为“父类”(基类、超类) ,从其继承而来的新类称为“子类”(派生类)
“子类继承(extends)父类”
▪ 子类自动继承了父类的成员变量和方法
▪ 子类可以增加自己的成员变量和方法 ▪ 子类可以覆盖(重写)继承的方法
animal = new Cat();
animal.shout(); //调用Cat对象的shout方法
运行时,判断指向Dog类对象 public class Dog implements Animal{ 调用Dog类对象shout方法
public void shout(){
}
System.out.println(“汪汪汪….”); Animal animal = new Dog();} animal.shout();
成员变量,代表性质和状态
Java程序世界以定义的class为蓝图,通过new操作 符,来生产出一个具体的“对象”,也叫做“实例 化” //new 一个名字叫做“zhangsan”的Person类对象
Person zhangsan = new Person();
//再new一个名字叫做“lisi”的Person类对象 Person lisi = new Person(); //zhangsan,lisi对象具备Person类所定义的性质和方法 zhangsan.eat(); //调用Person对象zhangsan的eat方法 lisi.eat(); //调用Person对象lisi的eat方法
“继承”的这种特点导致了面向对象最具威力的 特征——多态——的产生
2.3特征III——多态(Polymorphism)
多态:
▪ 同样一个方法调用,可以有不同的具体表现形态
多态的实现:
▪ 通过将父类对象引用变量指向子类对象,来实现动态的 方法调用
一般的对象创建形式(如创建PekingDog类)
public Interface Animal{ void shout(); }
Animal animal = new Animal();
由具体类实现(implements)接口,并实现接口中 定义的方法
public class 具体类 implements 接口名{ 实现接口中定义的具体方法;
亚里士多德(前384-前322年)
Βιβλιοθήκη Baidu
Q:什么是“鸟(类)”、“鱼(类)”、“人( 类)”?
A:鸟类是一种长有羽毛、能够飞翔的动物….人 类是一种能够双脚直立行走的高级动物…..
“类”就是很多相似事物的综合
自然世界中的“对象”
Q:“人”是谁? A:“人”谁也不是,“人”是一种抽象出来的“ 类型”,是头脑中的概念,是对千千万万具有“ 人类”特征的具体的生物体的综合和概括 Q:张三是谁?李四是谁?11计本3班某某,11计本 4班某某某是谁? A:他们是属于“人类”这个范畴的一个个具体的 “个体对象”
1.1 自然世界中的“类”和“对象 ”
自然世界中的“类”
类
基本解释:
拼音: 部首:
lèi 米
笔划: 9 五笔输入法:odu
类(類) 很多相似事物的综合:类型,种类,类别,类群,分类 笔画数:9 部首:米 笔顺编号:431234134
自然世界“类”的产生
2300多年前,古希腊亚里士 多德经过长期的科学实验观察 ,对世界上的500多种动物进 行了详细分类 “鸟类”、“鱼类”等这样的 “类型”概念和词汇第一次出 现在人类历史长河之中
▪ 当方法参数为父类型时,可以传递子类型对象 ▪ 当方法返回值为父类型时,可以返回任意子类型对象
示例
ObjectTest —DogBarker/DogBarkerTest
三、Java接口
3.1 Java接口的定义
一个Java接口是一组方法的声明,但没有方法的 具体实现,其实现是由实现了该接口的具体类来 完成
“类”是抽象的概念,“对象”是具体的个
1.2 程序世界中的类和对象
Java程序世界用一种复合数据类型class来表示“ 类”
public class Person{ private int age; public void eat() 方法体 }; }
成员方法,代表可以执行的动作
private String name;
dog = new BoltDog();
dog.bark();
此时,指向BoltDog类对象 调用BoltDog类对象重写的 bark方法
public class BoltDog extends Dog{
public void bark(){ System.out.println(“吱吱~”); } }
▪ 支持Servlet的Web服务器软件都自带Servlet API具体实现 的JAR包
Tomcat自带Servlet API的JAR包:安装目录\lib目录 \servlet-api.jar
不同服务器软件提供各自不同的Servlet API实现
查看Servlet API文档中响应客户请求方法
“遵循封装”示例 ObjectTest ——Dog类/DogTest测试类
▪ 创建存取方法,并强制程序必须通过方法进行数据访问
存取方法的命名习惯:setter和getter方法
封装实现了“数据隐藏”
封装基本原则
1
将成员变量标记为 私有private 提供setter和getter存 取方法,标记为 公开public
animal = new Cat();
animal.shout();
此时,指向Cat类对象 调用Cat类对象shout方法
public class Cat implements Animal{
public void shout(){ System.out.println(“喵喵喵….”); } }
自然世界
人类
张三、李四 …
个体
Java世界
Person class
Person
对象
二、面向对象的三个特征
面向对象程序设计的三大特征:
▪ 封装
▪ 继承
▪ 多态
2.1特征I——封装(Encapsulation)
“破坏封装”示例 ObjectTest Project——BagDog类/BagDogTest测试类
3.2 接口的声明与使用
Java接口采用Interface来定义
▪ 以下定义一个名字叫“Animal”的接口,接口中只声明 了一个shout()方法原型,无具体实现 public Interface Animal{ public void shout();
}
程序中不能像使用具体类那样直接使用(实例化 )接口
InterfaceTest Project —Animal/Dog/Cat
通过接口可以实现多重继承,一个类只能继承( extends)一个父类,但可以实现(implements )多个接口 “接口”和“实现”之间是一种“特殊的继承关 系” public class 类名 extends 父类 implements 接口1,接口2…
Java类、对象与接口
本篇内容
回顾Java类和对象 回顾面向对象三个特征
Java接口概念
Java接口与多态的关系 面向接口编程
一 回顾Java类和对象
在Java世界里,万物皆对象
▪ Everything is Object
面向对象程序的思维方式
▪ 尽量按照人类的自然思维方式来看待和解决问题
public class Cat implements Animal{ Cat实现
Animal接口 } } public void shout(){ System.out.println(“喵喵喵….”);
接口与实现
Animal shout()
Dog shout()
Cat
shout()
接口和实现示例
“面向接口编程”是一项重要的面向对象设计原 则,遵循“面向接口编程”原则,可以增强程序 (系统)的灵活性和扩展性 程序(系统)采用接口,可以通过更换接口的实 现类,以达到“灵活更换程序(系统)实现”的 目的
理解面向接口编程—回顾Servlet API
Servlet API:Sun公司定义了一套专门用于开发 Servlet程序的Java类和接口,这些类和接口提供 Servlet程序开发所涉及的各种功能,统称为Servlet API.
使用接口:
▪ 声明时采用接口类型,其指向为具体实现类对象 ▪ 运行时,根据其指向的具体对象类型,动态调用相应方 法 InterfaceTest Project —AnimalTest
Animal animal = new Dog(); animal.shout(); // 调用Dog对象的shout方法
多态示例II
问题需求
开发一个DogHouse,里面有
各种类型的Dog,设计一个 方法可以依次听到所有 Dog 的叫声
ObjectTest Project— DogHouse/DogHouseTest
多态现象的产生,除了通过创建对象时父类对象 引用 指向具体子类对象之外,还可以通过方法参 数和方法返回值的形式:
PekingDog dog = new PekingDog();
还可以这样创建(PekingDog类继承自Dog类)
Dog dog = new PekingDog();
父类对象 子类对象 Dog类对象引用变量指向PekingDog对象
当父类对象引用变量指向了子类对象,在程序运 行时,将根据其指向的子类对象类型,动态调用 子类对象的相应方法,产生出“多态”现象
}
public class Dog implements Animal{ Dog实现 Animal接口 }
public void shout(){
System.out.println(“汪汪汪….”);
public Interface Animal{ }
public void shout(); }
3.3 接口与多态
多态:
▪ 同样一个方法调用,可以有不同的具体表现形态 ▪ 多态的实现:通过将父类对象引用变量指向子类对象, 来实现动态的方法调用
通过接口,是Java程序中实现多态的常见形式
▪ 接口是一种“特殊的父类”
▪ 接口中的方法都没有实现,强制要求在实现了接口的具 体子类中必须重写
四、面向接口编程
接口的使用形式:
▪ 声明时采用接口,指向实现该接口的具体类对象 ▪ 方法参数为接口类型,可以传递任意实现该接口的具体 类对象 ▪ 方法返回值为接口类型,可以返回任意实现该接口的具 体类对象
示例
InterfaceTest Project —AnimalShouter/AnimalShouterTest
▪ 多态示例I ObjectTest —DogTest3
运行时判断指向HuskyDog类 public class HuskyDog extends Dog{ 对象,调用HuskyDog类对象 重写的bark方法 public void bark(){
System.out.println(“嗷呜~”); } Dog dog = new HuskyDog(); } dog.bark();
“继承”的意义
1
避免重复程序代码 提高复用 定义出共同的协议 产生多态
2
“继承”使得某个父类型之下的所有子类都会有 父类型所持有的方法
▪ 即:通过继承,定义了相关类之间的共同协议
位于某个父类型之下的所有子类都能够执行“共 同协议”所规定的这些动作
▪ 父类对象能做的事,子类对象也能做,具体如何做,由 子类来决定(可以重写动作的具体实现) ▪ 子类与父类之间是一种“is a”关系;可以把子类当做 父类来使用
继承示例
ObjectTest —PekingDog/HuskyDog/BoltDog/DogTest2
Dog height name bark()
PekingDog没有 特殊行为
PekingDog
HuskyDog bark()
BoltDog
bark()
被子类覆盖的方法
其它继承示例:
▪ 在Java中,所有类都是从Object这个(根)类继承而来 ▪ Web编程中,程序员开发的Servlet继承自HttpServlet类
2
2.2特征II——继承(inheritance)
继承的定义:继承是一个类可以获得另一个类的 特性的机制
▪ 存在继承关系时,现有类称为“父类”(基类、超类) ,从其继承而来的新类称为“子类”(派生类)
“子类继承(extends)父类”
▪ 子类自动继承了父类的成员变量和方法
▪ 子类可以增加自己的成员变量和方法 ▪ 子类可以覆盖(重写)继承的方法
animal = new Cat();
animal.shout(); //调用Cat对象的shout方法
运行时,判断指向Dog类对象 public class Dog implements Animal{ 调用Dog类对象shout方法
public void shout(){
}
System.out.println(“汪汪汪….”); Animal animal = new Dog();} animal.shout();
成员变量,代表性质和状态
Java程序世界以定义的class为蓝图,通过new操作 符,来生产出一个具体的“对象”,也叫做“实例 化” //new 一个名字叫做“zhangsan”的Person类对象
Person zhangsan = new Person();
//再new一个名字叫做“lisi”的Person类对象 Person lisi = new Person(); //zhangsan,lisi对象具备Person类所定义的性质和方法 zhangsan.eat(); //调用Person对象zhangsan的eat方法 lisi.eat(); //调用Person对象lisi的eat方法
“继承”的这种特点导致了面向对象最具威力的 特征——多态——的产生
2.3特征III——多态(Polymorphism)
多态:
▪ 同样一个方法调用,可以有不同的具体表现形态
多态的实现:
▪ 通过将父类对象引用变量指向子类对象,来实现动态的 方法调用
一般的对象创建形式(如创建PekingDog类)
public Interface Animal{ void shout(); }
Animal animal = new Animal();
由具体类实现(implements)接口,并实现接口中 定义的方法
public class 具体类 implements 接口名{ 实现接口中定义的具体方法;
亚里士多德(前384-前322年)
Βιβλιοθήκη Baidu
Q:什么是“鸟(类)”、“鱼(类)”、“人( 类)”?
A:鸟类是一种长有羽毛、能够飞翔的动物….人 类是一种能够双脚直立行走的高级动物…..
“类”就是很多相似事物的综合
自然世界中的“对象”
Q:“人”是谁? A:“人”谁也不是,“人”是一种抽象出来的“ 类型”,是头脑中的概念,是对千千万万具有“ 人类”特征的具体的生物体的综合和概括 Q:张三是谁?李四是谁?11计本3班某某,11计本 4班某某某是谁? A:他们是属于“人类”这个范畴的一个个具体的 “个体对象”
1.1 自然世界中的“类”和“对象 ”
自然世界中的“类”
类
基本解释:
拼音: 部首:
lèi 米
笔划: 9 五笔输入法:odu
类(類) 很多相似事物的综合:类型,种类,类别,类群,分类 笔画数:9 部首:米 笔顺编号:431234134
自然世界“类”的产生
2300多年前,古希腊亚里士 多德经过长期的科学实验观察 ,对世界上的500多种动物进 行了详细分类 “鸟类”、“鱼类”等这样的 “类型”概念和词汇第一次出 现在人类历史长河之中
▪ 当方法参数为父类型时,可以传递子类型对象 ▪ 当方法返回值为父类型时,可以返回任意子类型对象
示例
ObjectTest —DogBarker/DogBarkerTest
三、Java接口
3.1 Java接口的定义
一个Java接口是一组方法的声明,但没有方法的 具体实现,其实现是由实现了该接口的具体类来 完成
“类”是抽象的概念,“对象”是具体的个
1.2 程序世界中的类和对象
Java程序世界用一种复合数据类型class来表示“ 类”
public class Person{ private int age; public void eat() 方法体 }; }
成员方法,代表可以执行的动作
private String name;
dog = new BoltDog();
dog.bark();
此时,指向BoltDog类对象 调用BoltDog类对象重写的 bark方法
public class BoltDog extends Dog{
public void bark(){ System.out.println(“吱吱~”); } }
▪ 支持Servlet的Web服务器软件都自带Servlet API具体实现 的JAR包
Tomcat自带Servlet API的JAR包:安装目录\lib目录 \servlet-api.jar
不同服务器软件提供各自不同的Servlet API实现
查看Servlet API文档中响应客户请求方法