类:是抽象概念,表示的是一个共性的产物,类之中定义的是属性和行为(方法),是创建对象的模板;
什么是对象?
万物皆对象,对象是客观存在的事物,可以说任何客观存在的都是可以成为对象,表示一个独立的个体,每个对象拥有自己独立的属性,依靠属性来区分不同对象。 比如“人类”就是一个类,那么具体的某个人“张三”就是“人类”这个类的对象,而“名字、年龄”等信息就是对象的属性,人的动作比如“吃饭、穿衣”等就是对象的方法。
什么是面向对象:
面向对象是一种思想,是基于面向过程而言的,就是说面向对象是将功能等通过对象来实现,将功能封装进对象之中,让对象去实现具体的细节;这种思想是将数据作为第一位,而方法或者说是算法作为其次,这是对数据一种优化,操作起来更加的方便,简化了过程。 举例来说:就是:比如说你要去饭店吃饭,你只需要饭店,找到饭店的服务员,跟她说你要吃什么,然后就会给你做出来让你吃,你并不需要知道这个饭是怎么错做的,你只需要面向这个服务员,告诉他你要吃什么,然后他也只需要面向你吃完收到钱就好,不需要知道你怎么对这个饭进行吃。
类和对象的区别:
类是对象的模板,对象是类的实例。类只有通过对象才可以使用,而在开发之中应该先产生类,之后再产生对象。类不能直接使用,对象是可以直接使用的。
类的基本结构
如果一切都是对象,那么是什么决定某一类对象的行为与外观呢?答案时“类”。类是构造对象的模板或蓝图。就像建筑物与设计图纸,通过一份设计图纸,可以构造处建筑物,而Java开发人员在编写代码时,实际上是编写类代码,对象只有程序运行时才存在。
当用户创建一个Java程序时,可以通过类声明来定义类。通常,这些类里没有main方法,只有一些属性和方法。一个完整的程序,应该由若干个类组成,其中一般只有一个类有main方法。
在Java中,最简单的类的定义语法为:
class 类名 { //类中的代码 }
第一行称为类的声明。两个花括号之间的部分称为类体,类体中可以包含方法或成员变量。
例如下面代码定义了一个简单的类Student。
class Student { …}
在具体的编程中,一个完整的类还包含构造函数、成员变量、方法等
构造函数
在创建对象时,对象的成员可以由构造函数方法进行初始化。构造函数是一种特殊的方法,它具有和他所在的类完全一样的名字。一旦定义好一个构造函数,创建对象时就会自动调用它。构造函数没有返回类型,这是因为一个类的构造函数的返回值就是这个类本身。构造函数的任务就是初始化以一个对象的内部状态,所以用new操作符创建一个实例后,立刻就会得到一个可用的对象。
对象的创建
有了类就可以利用其创建对象了,在Java中创建对象很简单,只要用new关键字即可,由类创建对象的过程中称为实例化,每个对象是类的一个实例,如学生类是对什么是学生做定义,而张三、李四是学生类的实例。
创建对象与基本类型的声明类似,首先说明创建对象的所属类名,然后为对象的名称,例如 Student s=new Student();Student 为对象所属类,s为对象名称,通过new为新对象创建内存空间。与变量相比,对象的内存控件要大很多,因为对象是以类为模板创建的具体实列,具有属性和方法,例如s对象具有班级、姓名等属性,具有上课、下课等方法。如果要调用该对象则需要用点运算符’ . '连接需要的属性和方法,例如s.name=“李四”;。
题目一:编写程序,定义一个类Ch3Demo1:利用方法的重载,完成以下方法。 (1)第一个方法是public int max(int x,int y),用于计算两个整数的最大值。 (2)第二个方法是public double max(double x,double y),用于计算两个double型数据的最大值。 (3)第三个方法是public double max(int x,double y),用于计算一个整数和一个double型数据的最大值。 (4)第四个方法是public double max(int x,int y,int z ),用于计算三个整数的最大值。 编写测试方法(main)分别去调用一个对象的这些方法来完成测试。
public class Ch3Demo1 { /** * 用于计算两个整数的最大值。 参数的类型、参数的个数、参数的顺序 可以触发 方法的重载(overload) * * @param x * @param y * @return */ public int max(int x, int y) { // return x>y?x:y; if (x > y) { return x; } else { return y; } } public double max(double x, double y) { if (x > y) { return x; } else { return y; } } public double max(int x, double y) { if (x > y) { return x; } else { return y; } } public double max(double x, int y) { if (x > y) { return x; } else { return y; } } public double max(int x, int y, int z) { int m; if (x > y) { m = x; } else { m = y; } if (m < z) { m = z; } return m; } public static void main(String[] args) { Ch3Demo1 c1 = new Ch3Demo1(); double b = c1.max(8, 9, 6); // int b=max(8,9); System.out.println(b); } }题目二:设计一个矩形类Ch3Demo2,这个类包括: (1)两个名为width和height的double型数据域,它们分别表示矩形的宽和高。width和height的默认值都为1; (2)创建一个默认矩形的无参构造方法; (3)一个创建width和height为指定值的矩形的构造方法; (4)一个名为getArea()的方法返回这个矩形的面积; (5)一个名为getPerimeter()的方法返回周长。
public class Ch3Demo2 { // main方法,用来测试 public static void main(String[] args) { Ch3Demo2 c = new Ch3Demo2(4.5, 8); System.out.println(c.getArea()); System.out.println(c.getPerimeter()); } // 1 定义数据域(属性、数据成员、字段、外观 、成员变量...) double width = 1.0; double height = 1.0; // 2 方法(成员函数、行为、动作) // 2.1 构造方法(构造函数、构造器) Ch3Demo2() { } Ch3Demo2(double x, double y) { width = x; height = y; } // 2.2 普通方法 double getArea() { return width * height; } double getPerimeter() { return 2 * (width + height); } }