第4章 面向对象编程(成员变量成员方法构造方法重载方法)讲解

合集下载

第四Java面向对象编程基础-PPT文档资料

第四Java面向对象编程基础-PPT文档资料

4-15

类中变量的默认初始化

Java中,一个类中如果没有定义构造方法,则编 译器会自动生成一个没有参数的构造方法,用来初 始化类对象,并将类中变量自动初始化为该类型的 默认值:
Programming in Java
4-16
• • • • •
① 整型初始化为0; ② 实型初始化为0.0f、0.0d; ③ 逻辑型初始化为false; ④ 字符型初始化为'\u0000'; ⑤ 类对象初始化为null,表明不指向任何内存地 址的引用 • 如果类中定义了构造方法,则不会自动生成没 有参数的构造方法。
创建对象
1. 格式: 类名 新建对象名 =new 构造函数(参数 ); eg: 1. Phonecard mycard=new phonecard()
4-9
Programming in Java
4-10
2 使用对象的数据和方法
public class testcircle {public static void main(String[] args) {circle mycircle = new circle(); System.out.println("the area of the circle of radius"+mycircle.radius+"is"+mycircle.findarea());}} class circle { double radius=1.0; double findarea() {return radius*radius*3.14159;}} objectname.method引用对象的方法 objectname.data引用对象的数据

第四章 面向对象编程(三)

第四章 面向对象编程(三)

43
定义类CCircle实现接口


Class CCircle implements CircleCal{ double clength(double r){ return 2*PI*r; } double carea(double r){ return PI*r*r; }
44
5.没有实现父类中所有抽象方法的类,也是抽象类。
8
抽象类实例
public abstract class Car{
private double price;
pribate String brand;
private int speed;
public class CarDemo{
}
public static void main(String[] args){ 抽象类不 Car c=new Car(); }}//编译能否通过?? 能被实例 化
抽象类练习:

定义一个描述宠物的抽象类Pet,包含重 量(weight)和年龄(age)两个成员变 量和显示宠物资料的showInfo和获取宠 物资料的getInfo两个抽象方法。
19
生活中的接口

电脑主板上的PCI插槽的规范就类似于Java 接口
声卡
网卡
主板
显卡
每种卡的内部结构都不相同,可以把声卡、 网卡、显卡都插在PCI插槽上,而不用担心哪 个插槽是专门插哪个卡的
41
练习:


创建一个接口 CircleCal,其中有: 一个数据成员 pi=3.1415 一个方法 clength,求圆周长 一个方法 carea,求园面积 一个方法 cvolum,求球的体积 并创建一个类CCircle ,实现该接口

第四课C#中的OOP

第四课C#中的OOP

//定义 }
}
C# 中类的继承
多重继承
public class Graduate: Student, Employee
{
// 成员变量 // 成员函数 }
可实现多重接口
继承中的访问修饰符
总结
C#中的类和对象 掌握属性 掌握方法重载 掌握使用访问修饰符 了解类的构造函数 掌握this关键字 掌握继承 理解如何使用 private 和 protected 封装数据
成功之路
第四章 C#中的OOP

回顾
对象 类 属性 方法 封装 继承 抽象
课程目标
掌握以下知识点
C#中的类和对象 掌握属性 掌握方法重载 掌握使用访问修饰符 了解类的构造函数 掌握this关键字 掌握继承 理解如何使用 private 和 protected 封装数据
使用属性访问示例 2
直接访问 间接访问 隐式调用
属性
属性类型
类型
读 /写 只读 只写
提供读/写访问 赋给属性的值为只读 赋给属性的值为只写
示例 3
保护免受修改
没有设置值
错误
属性与字段(变量)的比较
属性为逻辑字段 属性是字段的扩展
与字段不一样,属性不直接对应存储位置
方法
方法是一种用于实现可以由对象或
public class Employee { public string name; public string alias; public decimal salary = 3000.00m; public Employee(string name, string alias) { = name; this.alias = alias; } public void printEmployee() { Console.WriteLine("Name: {0}\nAlias: {1}", name, alias); Console.WriteLine("Taxes: {0:C}", Tax.CalcTax(this)); } } public class Tax { public static decimal CalcTax(Employee E) { return (0.08m*(E.salary)); } }

面向对象知识点总结

面向对象知识点总结

⾯向对象知识点总结1、⾯向对象三⼤特征封装:封装就是隐藏对象的属性和实现细节,仅对外公开接⼝,控制在程序中属性的读和修改的访问级别,将抽象得到的数据和⾏为(或功能)相结合,形成⼀个有机的整体。

继承:继承就是⼦类继承⽗类的特征和⾏为,使得⼦类对象(实例)具有⽗类的实例域和⽅法,或⼦类从⽗类继承⽅法,使得⼦类具有⽗类相同的⾏为。

多态:多态指同⼀个⾏为具有多个不同表现形式或形态的能⼒,是指⼀个类实例(对象)的相同⽅法在不同情形有不同表现形式,使具有不同内部结构的对象可以共享相同的外部接⼝。

2、类与对象对象:对象是类的⼀个实例,有状态和⾏为。

类:类是⼀个模板,它描述⼀类对象的⾏为和状态。

⼀个类可以包含以下类型变量:(1)局部变量:在⽅法、构造⽅法或者语句块中定义的变量被称为局部变量。

变量声明和初始化都是在⽅法中,⽅法结束后,变量就会⾃动销毁。

(2)成员变量:成员变量是定义在类中,⽅法体之外的变量。

这种变量在创建对象的时候实例化。

成员变量可以被类中⽅法、构造⽅法和特定类的语句块访问。

(3)类变量:类变量也声明在类中,⽅法体之外,但必须声明为 static 类型。

3、构造⽅法每个类都有构造⽅法。

如果没有显式地为类定义构造⽅法,Java 编译器将会为该类提供⼀个默认构造⽅法。

在创建⼀个对象的时候,⾄少要调⽤⼀个构造⽅法。

构造⽅法的名称必须与类同名,⼀个类可以有多个构造⽅法。

4、封装封装是指⼀种将抽象性函式接⼝的实现细节部分包装、隐藏起来的⽅法。

封装可以被认为是⼀个保护屏障,防⽌该类的代码和数据被外部类定义的代码随机访问。

要访问该类的代码和数据,必须通过严格的接⼝控制。

修改属性的可见性来限制对属性的访问(⼀般限制为private),可通过getter和setter⽅法访问和操作类中私有成员变量。

如下代码:class BookClass{private String title;private int pageNum;BookClass(){};// 设置名称public void setTille(String title) {this.title = title;}public String getTitle() {return title;}// 设置页数public void setPageNum(int pageNum) {if (pageNum>=200) {this.pageNum = pageNum;} else {System.out.println("页数输⼊错误,图书页数不能⼩于200页,设置为默认值200");this.pageNum = 200;}}public int getPageNum() {return pageNum;}// 显⽰图书信息public void detail() {System.out.println("图书名称为:"+title+",页数为:"+pageNum);}}5、继承在 Java 中通过 extends 关键字可以申明⼀个类是从另外⼀个类继承⽽来的。

第四章 面向对象程序设计基础

第四章 面向对象程序设计基础
面向对象的软件开发过程分为:面向对 象分析、面向对象设计、面向对象实现
OOA
OOD
OOP
面向对象的基本概念——对象 对象 面向对象的基本概念
对象具有两方面的含义:
在现实生活中
客观世界的实体
在计算机程序中
程序中对象就是一组变量和相 关方法的集合,其中变量表明 对象的状态,方法表明对象所 具有的行为。
import语句 语句
引入包中的类。 import java.io.File; 引入整个包。 import java.io.*; 在同一包中的类可以互相引用,无需 import语句。
访问控制修饰符
修饰符 public protected default private 任何地方 √ 子类中 √ √ 同包中 √ √ √ 本类中 √ √ √ √
第四章 面向对象程序设计基础
面向对象编程基础——程序语言的发展 程序语言的发展 面向对象编程基础
面向机器( 面向机器 机器语言、汇编语言) – 汇编是对机器语言的抽象。 – 可读性、可维护、移植性差;效率高。 面向过程 – 面向过程语言是对汇编的抽象。 – 核心:算法 + 数据结构 – 缺陷: 随着应用程序的规模扩大,操作与数据分离所带来的维护工作 量越来越大 不适用于GUI界面、事件驱动编程 是对现实问题的抽象。 面向对象 是对现实问题的抽象。
void brake() { … } void speedUp() {…} void slowDown() { … }
抽象数据类型
面向对象与面向过程区别
面向过程:第一步干什么,第二步干什 么,第三。。。。。 面向对象:一共有几个对象,对象之间 都是什么关系? 面向对象的基本思想是:从现实世界中 客观存在的事物出发来构造软件系统. 并在系统的构造中尽可能运用人类的自 然思维方式.

面向对象程序设计第四章

面向对象程序设计第四章

4.1 抽象与封装




封装就是将数据的表现方式和对数据的操作细节隐藏 起来,用户可以通过接口对数据进行操作,而不必要 知道数据是如何表示的,怎么对数据操作的这些细节 封装是面向对象的基本特征之一 变速箱变速、汽车驱动、汽车转向等原理都被封装在 汽车内部了,提供给驾驶员的只是一个接口。驾驶员 只需要踩下油门、转动方向盘就可以上路了 我们不必要知道录音机、MP3播放器、电视机遥控器 等内部细节,只需要知道按下哪个键可以播放、停止 即可


类成员包括成员函数和数据成员两类。 包含可执行代码的成员统称为该类的成员函数。 类的成员函数包括:方法、属性、事件、索引 器、运算符和构造函数。 类的数据成员包含类要处理的数据,可以是常 量和字段。
4.3 对象
4.3.1 创建对象 使用new运算符,可以创建对象,即类的实例。对象 是一个引用类型的变量。 对象的创建形式: 类名 对象名 = new 类名(参数); Goods cloth = new Goods(10); 使用new运算符创建对象,并调用类的构造函数完成 对象的初始化工作。也可以分两步创建对象: Goods cloth ; cloth = new Goods(10);
protected
internal protected internal
定义保护成员。成员可以从定义它的类内部,以及派 生类访问
定义内部成员。成员只能从当前程序集中访问 定义内部保护成员。成员在当前程序集、定义它的类 内部和派生类访问
4.7.1 使用传统的读写方法进行封装

在程序中,可以使用传统的读写方法封装私有 数据。通常先定义私有字段,然后定义一个读 私有字段的方法和一个修改字段的方法。如果 想访问类中封装的私有数据,只能通过读写方 法完成,这样可以保证类中封装数据的完整性

第四章 面向对象(下)

信息学院通信与电子信息教研室
Java基础及应用开发
王亚平
总目录
第一章
第二章
第三章
第四章
第五章 第六章 第七章
Java入门 Java编程基础 面向对象(上) 面向对象(下) 多线程 图形用户界面GUI Java编程进阶
本章目标
类的继承 final关键字 抽象类 接口(interface) 对象的类型转换 面向对象的多态性 异常 包(package)
4.9 包

package语句及应用 package语句作为Java源文件的第一条语句。如果没有 package语句,则为缺省无名包。 import语句及应用 jdk中常用的包
– ng----包含一些Java语言的核心类,如String、Math、Integer、 System和Thread,提供常用功能。 – java.awt----包含了构成抽象窗口工具集(abstract window toolkits) 的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)。 – java.applet----包含applet运行所需的一些类。 – ----包含执行与网络相关的操作的类。 – java.io----包含能提供多种输入/输出功能的类。 – java.util----包含一些实用工具类,如定义系统特性、使用与日期日历 相关的函数。
4.8 异常 Nhomakorabea异常定义了程序中遇到的非致命的错误, 而不是编译时的语 法错误,如程序要打开一个不存的文件、网络连接中断、 操作数越界、装载一个不存在的类等。 try,catch语句 throws关键字 自定义异常与throw关键字 如何对多个异常作出处理 也可以在一个方法中使用throw,try…catch语句来实现程 序的跳转 一个方法被覆盖时,覆盖它的方法必须扔出相同的异常或 异常的子类。 如果父类扔出多个异常,那么重写(覆盖)方法必须扔出 那些异常的一个子集,也就是说不能扔出新的异常。

面向对象编程技术第四章-文档资料


说明:
关键字public后面声明公有类型成员 它们是类与外部的接口,任何外部函数都可以访问公有类 型数据和函数 关键字private后面声明私有类型成员
允许本类中的函数访问,类外部的任何函数都不能访问。 紧跟在类名称的后面声明私有成员,关键字private可省略 (不提 倡)
1.
2.
说明:
3.
保护类型与private类似,其差别表现在继承与派生时对派 生类的影响不同,在第七章介绍。
下页 例子
构造函数,后面介绍 class circle { public: circle::circle(int r) { radius=r; } int area() { return (int)3.14*radius*radius;
} void circle_prt() { cout<<"the private radius is:"<<radius<<endl; } void main() private: { int radius; circle circle1(1),circle2(3); };
3. 利用类易于编写大型复杂程序,其模块化程度比 C中采用函数更高。
慢慢体会…
2. 类的定义:
类是一种用户自定义类型,声明形式: class 类名 { public: 公有成员(外部接口) private: 私有成员 protected: 保护型成员 }
时钟类的成员 (数据成员与函数成员声明) class Clock 数据成员 {private: int Hour, Minute, Second; public: void SetTime(int NewH, int NewM, int NewS); void ShowTime( ); };

第4讲 面向对象的程序设计


(3)私有成员 私有成员通过在成员声明中使用private修饰 符来定义.C#中的私有成员只有类中的成员 可以访问,在类的外部是禁止直接访问私有 成员的.这也是C#中成员声明的默认方式, 即若在成员声明时没有使用任何访问修饰符, 那么C#自动将它限定为私有成员. (4)内部成员 内部成员通过在成员声明中使用internal修饰 符来定义.该成员只能被程序集中的代码访 问,而程序集之外的代码无法访问.
(3)不能显式地调用析构函数. (4)析构函数的命名规则是在类名前加上一个"~"号. 如上例的Example1类的析构函数为: ~Example1() { }; (5)析构函数在对象销毁时自动调用. 【例7-3】 类的构造函数和析构函数的演示.(程序代 码详见例7-3)[执行结果]
using System; class Exam { static public int a;//静态成员 public int b;//实例成员 public Exam()//构造函数,没有参数,用来给成员变量赋初值0 { a=0; b=0; } public Exam(int m,int n)//构造函数,有参数,用来给成员变量赋特定的初值 { a=m; b=n; } ~Exam()//析构函数 {} } class A_7_3 { public static void Main() { Exam E1=new Exam();//产生类的实例E1,自动调用无参数的构造函数 Console.WriteLine("a={0},b={1}",Exam.a,E1.b); Exam E2=new Exam(10,20);//产生类的实例E2,自动调用有参数的构造函数 Console.WriteLine("a={0},b={1}",Exam.a,E2.b); } }

第四章 Java面向对象编程基础共60页


{ Date now=new Date();
if(now.getYear()m_StartWorkDateE.mgeptlYoeyaere()e>1==3n&e&wdCaoyms<m=o2n1E)mployee ()
return true;
else return false; }}
Programming in Java
类的修饰符 abstract 抽象类:没有自己的对象 abstract class A{..} A a1=new A(); final 最终类:没有子类的类 final class B{..} class C extends B{..}
Programming in Java
抽象类
4-15
➢ 用 abstract修饰的类(称为抽象类)没 有自身的对象,此类的对象均为其子类 的对象.
4-12
class Department {
int m_DeptNo=10; String m_DeptName; int m_DeptTotalEmp=30; Department(int dno,String dname,int total) {
m_DeptNo=dno; m_DeptName=new String(dname); m_DeptTotalEmp=total; } }
➢抽象类就是没有具体对象的概念类
➢ 不能创建抽象类的对象
➢ 抽象类里可以预留一部分方法给子 类实现
➢ 抽象类可以提高开发和维护的效率
Programming in Java
抽象类使用示例
4-16
பைடு நூலகம்
Programming in Java
抽象类使用示例
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档