《定义类方法课件》由会员分享,可在线阅读,更多相关《定义类方法课件(39页珍藏版)》请在金锄头文库上搜索。
1、第八章,类与对象,程序设计方法的发展过程,小作坊设计模式 硬件成本高,软件便宜,编程讲究技巧,编程人数少 结构化程序设计 硬件成本低,软件成本高,编程讲究可维护性,编程人数多 面向对象程序设计 硬件成本低,软件代码动辄百万行,软件危机,编程人数多,程序设计方法,公共数据,算法数据结构,对象消息,一、面向对象的基本概念,符合人们日常自然的思维习惯; 降低、分解问题的难度和复杂性,提高软件的可重用性、可扩展性、可管理性; 获得较高效率和较满意效果。,面向对象程序设计的优点:,类与对象,对象是表示现实世界中某个具体的事物;类的某一个对象则被称为是类的一个实例,是类的实例化结果。 类是对对象的抽象描述
2、。是一种抽象的数据类型,它是所有具有一定共性的对象的抽象,是创建对象的“模板”。 在现实世界中,是从对象提炼出类的概念;在编程时,是先有类,然后通过类来创建对象,消息(message),消息 对象之间相互请求或相互协作的途径,是要求某个对象执行某项操作的规格说明 消息传递的三个要素: 消息的接收者 接收对象中哪个方法完成指定动作 此方法需要的参数 发送对象 发出消息,请求接收对象响应 接收对象 收到消息后,经过解释,激活方法,予以响应,消息的格式,所谓对一个对象发信息,就是调用该对象的一个方法。 对象名. 方法名(参数) 如:Math.max (a, b); Integer.parseInt
3、(str); String.length();,方法(method),方法 是对象的行为方式(操作) 对象与外界的接口 作用 改变对象的属性 返回对象的属性,object1,object2,二、定义类,修饰符 class 类名 extends 父类 implements 接口名 成员变量声明; 构造器声明 方法声明; ,Java实例 定义类,public class dogs public String Name; public int Weight; public int Height; public void ShowDog(String n,int x,int y) Name = n;
4、Weight = x; Height = y; public void eat () System.out.println(“Dogs eat bone.“); public void bark () System.out.println(“A dog will bark at strangers.“); ,Java实例 定义类,class Point private int x,y; public void setPoint(int a,int b) x=a; y=b; public int getX() return x; public int getY() return y; publi
5、c String toString() return “+x+“,“+y+“; ,三、定义对象,修饰符 类名 对象名; 对象名=new 类名(实参列表); 或 修饰符 类名 对象名=new 类名(实参列表);,定义对象通常包括:声明对象、创建对象和初始化对象三步。,1、声明、创建对象,类名 对象名; Point thePoint; 注意:类属于复合数据类型,因此,在声明对象时,系统并没有为对象分配空间,用户需要应用new完成分配空间的任务。 thePoint = new Point( );,2、引用对象,引用成员变量 对象名.成员变量名 引用方法 对象名.方法名(参数列表),public cl
6、ass Circle float r; final double PI=3.14159265; public void setR (float x) r=x; public double area() return PI*r*r; public double perimeter() return 2*PI*r; public static void main (String args) double x,y; Circle cir = new Circle(); cir.setR(12.5f); System.out.println(“圆的面积为:“+cir.area()+“n圆的周长为:“+
7、cir.perimeter(); ,class Point private int x,y; public void setPoint(int a,int b) x=a; y=b; public int getX() return x; public int getY() return y; public String toString() return “+x+“,“+y+“; public double distance (Point a) return Math.sqrt(a.getX()-x)*(a.getX()- x)+ (a.getY()-y)*(a.getY()-y); ,cla
8、ss PointDemo public static void main(String args) Point source=new Point(); Point target=new Point(); source.setPoint(0,0); target.setPoint(5,8); System.out.println(“第一个点的坐标位置为: “+source.toString(); System.out.println(“第二个点的坐标位置为: “+target.toString(); System.out.println(“两点的距离为: “+source.distance(ta
9、rget); ,3、初始化对象,类中包含有成员变量和方法,当使用类声明并创建对象时,使用new关键字,这时系统为对象创建自己的内存区域并自动调用构造器初始化成员变量。,Java实例 创建对象,class Employee String name ; int age ; float salary ; void print() System.out.println( name + “年龄为: ” +age + “月薪为: ” + salary); Employee e = new Employee( ) ; e.name=“张立” ; e.age=21; e.salary = 528.37F ;
10、e. print() ;,实例变量成员变量 其生命周期与对象存在的时间相同。,用构造器初始化对象,class Employee String name ; int age ; float salary ; Employee (String n, int a, float s) name = n ; if(a=18 ,构造器(构造方法),构造器是一个类的方法中方法名与类名相同的方法。 当使用new关键字创建一个对象,为新建对象开辟了内存空间之后,系统自动根据参数调用相应的构造器来初始化这个新建对象。 构造器的主要功能是为数据成员赋初值。,构造器的特点,构造器名与类名相同; 构造器没有返回类型,也
11、不是void; 构造器能够简化对象数据成员的初始化操作。如果不定义构造器,此时系统会自动为该系统生成一个默认的没有任何参数的构造器,并使用缺省值来初始化实例变量; 构造器不能显式地直接调用,总是和new运算符一起被调用; 使用不同数量、不同类型的参数对类初始化会拥有多个构造器,这种现象称为构造器的重载; 构造器可以继承,即子类可以继承父类的构造器。,对象的创建和使用步骤,定义类 声明引用类型的变量 创建对象,把指向对象的引用放到引用类型变量中 使用变量的属性和方法 释放变量所占空间,Java实例 定义构造方法,public class Students String name; String
12、address; String grade; int score; public void setMessage (String x1,String x2,String x3) name=x1; address=x2; grade=x3; public void setScore (int y) score = y; public static void main(String args) Students zhang = new Students(); zhang.setMessage(“张三“,“西安市兴庆路1号“,“2003级国际贸易3班“); zhang.setScore(90); S
13、tudents wang = new Students(); wang.setMessage(“王五“,“西安市翠华路12号“,“2003级电子技术3班“); wang.setScore(85); System.out.println(zhang.name+zhang.address+zhang.grade+zhang.score); System.out.println(wang.name+wang.address+wang.grade+wang.score); ,public class Student String name; String address; String grade;
14、int score; Student(String x1,String x2,String x3,int y) name=x1; address=x2; grade=x3; score=y; public static void main(String args) Student zhang; zhang=new Student(“张三“,“西安市兴庆路1号“,“2003级国际贸易3班“,90); Student wang; wang=new Student(“王五“,“西安市翠华路12号“,“2003级电子技术3班“,85); System.out.println(zhang.name+zh
15、ang.address+zhang.grade+zhang.score); System.out.println(wang.name+wang.address+wang.grade+wang.score); ,Java实例(续),使用new创建对象时,Java系统自动调用与类同名的构造方法。,this代表当前对象本身,即对当前对象的一个引用。 (1) 用来访问当前对象的数据成员,其使用形式如下: this.数据成员 (2) 用来访问当前对象的成员方法,其使用形式如下: this.成员方法(参数) (3) 当有重载的构造方法时,用来引用同类的其他构造方法,其使用形式如下: this(参数),4、
16、修饰符 this,如:class TestColor int r,g,b; TestColor(int r,int g,int b) this.r=r; this.g=g; this.b=b; ,public class ThisTest private int x,y; ThisTest(int a,int b) this.x=a; this.y=b; ThisTest() this(0,0); public int getX() return x; public int getY() return y; public String toString() return “+this.getX
17、()+“,“+this.getY()+“; public double distance(ThisTest b) return Math.sqrt(x-b.getX()*(x-b.getX()+(y-b.getY()*(y-b.getY(); public static void main(String args) ThisTest source=new ThisTest(); /创建Position对象source ThisTest target=new ThisTest(5,8); /创建Position对象target System.out.println(“第一个点的坐标位置为:“+source.toString(); System.out.println(“第二个点的坐标位置为:“+target.toString(); System.out.println(“两个点的距离是:“+source.distance(target); ,