1、Java 基础,面向对象设计(基础),本节目标,面向对象概念 类与对象的概念 封装性 构造方法的使用 this 关键字的使用 static的使用 了解内部类,面向对象与面向过程,面向对象与面向过程对于面向对象与面向过程可以用一个例子解释,如一个木匠要做一个盒子,那么做这个盒子的出发点会有两种方式: 面向对象:先想好要做的盒子,之后再去找相应的工具去做好这个盒子。 面向过程:不去想要做什么样的盒子,随需取用工具。,面向对象的三大特征,封装(Encapsulation) 对外部不可见 继承(Inheritance) 扩展类的功能 多态(Polymorphism) 方法的重载 对象的多态性,类与对象
2、,类是对某一类事物的描述,是抽象的、概念上的定义;对象是实际存在的该类事物的每个个体,因而也称实例(instance) 如果将对象比作汽车,那么类就是汽车的设计图纸。所以面向对象程序设计的重点是类的设计,而不是对象的设计,汽车设计图纸,第一辆,第二辆,第三辆,类的定义格式,class 类名 属性;方法; 属性也叫成员变量 方法也叫成员方法,类的定义,class Person int age ;void shout()System.out.println(“oh,my god ! I am“+age); age是类的属性,也叫类成员变量 shout是方法也叫类的成员函数 shout方法可以直接访
3、问同一个类中的age变量,如果一个方法中有与成员变量同名的局部变量,该方法中对这个变量名的访问是局部变量,而不再是成员变量,对象的产生,格式:类名 对象名 = new 类名() 例如:Person p1 = new Person();当一个对象被创建时,会对其中各种类型的成员变量自动进行初始化赋值。除了基本数据类型之外,其余的变量类型都是引用类型,如上面的Person类及前面讲过的数组。,栈内存,p1,堆内存,属性,new,对象的使用,创建新的实例化对象之后,可以使用“对象名.对象成员”的格式,来访问对象的成员(包括属性和方法) 访问属性或方法: 对象.属性 对象.方法()class Test
4、Person public static void main(String args)Person p1 = new Person();Person p2 = new Person();p1.age = -30 ;p1.shout() ;p2.shout() ; ,创建多个对象,类名 对象1 = new 类名(); 类名 对象2 = new 类名();,堆内存,注:p1与p2分别指向各自不同的堆内存空间,类中方法的使用,方法的定义 在类内部调用方法,练习题,试找出下列程序中的错误,并试着订正它。 class Crectangle int width ;int height ; public c
5、lass Careers public static void main(String args)CRectangle rect1 ;rect1.width = 15 ;rect2.height = 10 ;System.out.println(“面积为:“+(rect1.width*rect1.height); ,练习题,1、试设计一个CBox类,具有length、width、height三个整数,并完成下列程序设计。 (1)、定义volume()方法,用来计算CBox对象的体积。 (2)、定义surfaceArea()方法,用来计算CBox对象的表 面积。2、试设计一方法,使用同一个名称的
6、method来传入数据 (a)、set(String color) /可输入长方形的颜色 (b)、set(int w,int h,int l) /可输入长方形的长、宽和高 (c)、set(String color,int w,int h,int l)/可输入长方形的颜色、宽和高,匿名对象,我们也可以不定义对象的引用名称,而直接调用这个对象的方法。这样的对象叫做匿名对象,如:new Person().shout(); 如果对一个对象只需要进行一次方法调用,那么就可以使用匿名对象。 我们经常将匿名对象作为实参传递给一个函数调用,类的封装性,采用private关键字实现类的封装性 采用setXxx(
7、)和getXxx()方式对私有变量的操作,封装的好处,让使用者只能通过实现定制好的方法来访问数据,可以方便地加入控制逻辑,限制对属性的不合理操作 便于修改,增强代码的可维护性,构造方法,构造方法的特征 它具有与类相同的名称 它不含返回值类型的定义 它不能在方法中用return语句返回一个值,构造方法的定义及使用,构造方法的定义:class Personpublic Person() 构造方法调用时机 构造方法在实例化对象时被自动调用,主要用来为类中的属性初始化 构造方法的重载 与一般方法重载类似,只要参数的个数类类型不同即可,对象的比较,String类中“equals()”和“=”的区别 eq
8、uals:内容比较 =:值比较 如何比较两个对象的内容是否相等?,this的使用,可以调用本类中的方法 一般方法 构造函数 调用构造方法时,this()要放在构造方法的首行 可以调用本类中的属性 可以表示当前对象,方法的参数传递,基本数据类型参数的传递 引用数据类型的参数传递,static的使用,static变量的声明及使用 static方法的声明及使用 static代码块的使用,理解main方法,public: 表示此方法为公共的,可被外部所访问。 static: 表示此方法为static方法,可被类名直接调用。 void: 表示此方法无返回值 main: 系统规定的方法名称 String args: 接收运行时参数,构造方法的私有,class Personprivate Person() 私有的构造方法是不允许外部对象调用的,即:无法在外部用此构造方法实例化对象。,对象数组的创建,对象数组的使用分为两部分: 一、创建格式:类名 对象名 = new 类名个数 二、实例化对象数组对象名索引 = new 类名();,内部类,内部类的定义内部类的使用 内部类如何被外部调用?,Java Doc文档,文档的作用 文档生成工具的使用,本章重点,类与对象的关系 构造方法的声明及使用 类的封装性 this关键字的使用 static关键字的使用 理解main方法,