第3章面向对象技术 3.1类和对象 3.2类的创建 3.3对象的创建 34类的封装 ·3.5类的继承 36类的多态性 37递归方法
第3章 面向对象技术 • 3.1 类和对象 • 3.2 类的创建 • 3.3 对象的创建 • 3.4 类的封装 • 3.5 类的继承 • 3.6 类的多态性 • 3.7 递归方法
3.1类和对象 引入:现实生活中的类和对象 类:具有相同性质的个体的集合。 对象:类中的某个个体。 属性与能力 JAA中的类和对象 类:用[基本数据类型定义(构造)的一种引用数据类 型 对象:类中的常量或变量。 成员变量:说明属性的数据。 成员方法:说明对属性(数据)进行的操作
3.1 类和对象 • 引入:现实生活中的类和对象 类:具有相同性质的个体的集合。 对象:类中的某个个体。 属性与能力 • JAVA中的类和对象 类:用[基本]数据类型定义(构造)的一种引用数据类 型。 对象:类中的常量或变量。 成员变量:说明属性的数据。 成员方法:说明对属性(数据)进行的操作
学生类 ·属性 能力 姓名 回答姓名 性别 回答性别 出生日期年月日 回答年龄 班级 回答班级 成绩 回答成绩
学生类 • 属性 姓名 性别 出生日期:年月日 班级 成绩 • 能力 回答姓名 回答性别 回答年龄 回答班级 回答成绩
3.2类的创建 3.2.1类的声明 322类的主体 1.声明成员变量 2.声明成员方法 3.方法体 4.变量的作用范围 5类与程序例3.1
3.2 类的创建 • 3.2.1 类的声明 • 3.2.2 类的主体 1. 声明成员变量 2. 声明成员方法 3. 方法体 4. 变量的作用范围 5. 类与程序 例3.1
public class Datel 类声明 int year,month, day ∥成员变量,表示年、月、日 void setdate(int y, int n,intd)∥成员方法,设置日期值 ∥公有的,无返回值,有三个参数 year≡y month =m boolean isleapyearo ∥.断年份是否为闰年 ∥布尔型返回值,无参数 return (year%/400==0)(year%1001=0)&(year%4==0) void printo ∥输出日期值,无返回值,无参数 System. out. printIn("date is"+year+'-'+month+'-'+day) public static void main( String args) Datel a= new Datel;∥创建对象 a setdate(2002,4,18); ∥调用类方法 a printo System. out printIn(a year+ is a leap year, "+a isleapyearO)
public class Date1 //类声明 { int year,month,day; //成员变量,表示年、月、日 void setdate(int y,int m,int d) //成员方法,设置日期值 { //公有的,无返回值,有三个参数 year = y; month = m; day = d; } boolean isleapyear() //判断年份是否为闰年 { //布尔型返回值,无参数 return (year%400==0) | (year%100!=0) & (year%4==0); } void print() //输出日期值,无返回值,无参数 { System.out.println("date is "+year+'-'+month+'-'+day); } public static void main(String args[]) { Date1 a = new Date1() ; //创建对象 a.setdate(2002,4,18); //调用类方法 a.print(); System.out.println(a.year+" is a leap year,"+a.isleapyear()); } }
3.3对象的创建 ·对象的生命期:创建→使用→销毁 3.31对象的创建 1声明2实例化3声明同时实例化 3.32对象的使用 1引用成员变量2调用成员方法3.参数传递原贝 3.33对象的初始化 1.系统对变量的初始化2.构造方法3.例3.2 3.34对象的销毁:析构方法
3.3 对象的创建 • 对象的生命期:创建→使用→销毁 • 3.3.1 对象的创建 1.声明 2.实例化 3.声明同时实例化 • 3.3.2 对象的使用 1.引用成员变量2.调用成员方法3.参数传递原则 • 3.3.3 对象的初始化 1.系统对变量的初始化 2.构造方法 3.例3.2 • 3.3.4 对象的销毁:析构方法
ublic class date2 int year,month, day, Date2( (int y, int m, int d)∥类的构造方法用于初始化成员变量 year≡y month = m boolean isleapyearo return(year%400==0) (year%1001=0)&(year%4==0) void printo System. out. println("date is"+year+'-'+month+-+day) class date2 ex ∥其他类 public static void main( String args) Date2a= new date2(2002,6,30);∥创建对象的同时,初始化 a printo System. out. println(a year+ is a leap year, +a. isleapyearO)
public class Date2 { int year,month,day; Date2(int y,int m,int d) //类的构造方法,用于初始化成员变量 { year = y; month = m; day = d; } boolean isleapyear() { return (year%400==0)| (year%100!=0) & (year%4==0); } void print() { System.out.println("date is "+year+'-'+month+'-'+day); } } class Date2_ex //其他类 { public static void main(String args[]) { Date2 a = new Date2(2002,6,30) ; //创建对象的同时,初始化 a.print(); System.out.println(a.year+" is a leap year,"+a.isleapyear()); } }
3.4类的封装 34.1封装的概念 342如何封装 1.访问权限 2.设置类的访问权限 3.设置类成员的访问权限例3.3 343实例成员和类成员 公共设施:西工院的图书馆允许本院师生使用, 不允许外单位人员使用 1实例变量和类变量 2实例方法和类方法例34
3.4 类的封装 • 3.4.1 封装的概念 • 3.4.2 如何封装 1. 访问权限 2. 设置类的访问权限 3. 设置类成员的访问权限 例3.3 • 3.4.3 实例成员和类成员 公共设施:西工院的图书馆允许本院师生使用, 不允许外单位人员使用. 1.实例变量和类变量 2.实例方法和类方法 例3.4
34.1封装的概念 日常生活中的封装与权限 1你家的钱我不知道有多少我不知道在 哪儿放着;我暂时没钱要买东西,就得向你 借;我有钱了要向你还 2学生成绩的管理:上课老师可输入并修 改所带课班级的成绩,其它人只能查看 3党委会的决议我不知道
3.4.1 封装的概念 • 日常生活中的封装与权限 1 你家的钱,我不知道有多少,我不知道在 哪儿放着;我暂时没钱,要买东西,就得向你 借;我有钱了,要向你还. 2 学生成绩的管理:上课老师可输入并修 改所带课班级的成绩;其它人只能查看. 3 党委会的决议我不知道…
blic class date3 类的封裝 orivate int year,month, day; ∥成员变量,私有的 public Date3(int y, int m, int d) month=(m>=1)&(m=1)&(d<=31)?d:1);} public int getyearO ∥)员方法公有的 freturn year;) public boolean isleapyearo return(year%400=0)|(year%1001=0)&(year%4==0);} ublic void printo i System. out printIn(date is"+year+'-'+month+'-'+day);) class date3 ex ∥其他类 public static void main(String args) Date3 a= new Date3(2002, 6, 28); System. out. printIn(a getyear(+is a leap year, +a isleapyearO)
public class Date3 //类的封装 { private int year,month,day; //成员变量,私有的 public Date3(int y,int m,int d) { year = y; month = (((m>=1) & (m=1) & (d<=31)) ? d : 1); } public int getyear() //成员方法,公有的 {return year; } public boolean isleapyear() { return (year%400==0) | (year%100!=0) & (year%4==0); } public void print() { System.out.println("date is "+year+'-'+month+'-'+day); } } class Date3_ex //其他类 { public static void main(String args[]) { Date3 a = new Date3(2002,6,28) ; a.print(); System.out.println(a.getyear()+" is a leap year,"+a.isleapyear()); } }