头歌 实验二 Java类编程实验
制作不易,点个关注!给大家带来更多的价值!
第一关: 编写一个代表三角形的类
任务描述
本关任务:创建一个类和一个对象,调用这个对象的属性和方法。
相关知识
为了完成本关任务,你需要掌握:1、什么是类和对象; 2、怎么定义类; 3、怎么创建对象并使用对象的属性和方法。
类的设计
作为Java程序的基本要素,类由成员变量(也称属性)和成员方法组成。属性包括常量和变量,方法则包括构造方法和自定义方法,在定义类时,它们习惯上按如下次序排列:
public class Order{
// final属性
// 属性
// 构造方法
// 自定义方法
}
类的属性一般定义为私有的,而类的方法定义为public。
访问修饰符
Java中定义了private、public、protected和默认的访问修饰符,这些修饰符控制着对类和类的成员变量以及成员方法的访问规则。另外,还可以辅助static和final关键字定义特殊规则。
,
public是公有类型的权限修饰符,使用public修饰的类、成员变量和成员方法,其他类都可以访问,包括任意包中的任意类以及子类。
private是私有类型的权限修饰符,使用private修饰的成员变量和成员方法,只能在本类中被使用,在子类中是不可见的,并且对其他包的类也是不可见的。
protected是保护级别的权限修饰符,它保护成员不会被其他包或非子类访问。也就是说protected修饰的成员只能被子类和同一包中定义的其他类访问。
当不添加任何权限修饰符时,编译器会使用默认权限修饰符,该修饰符的权限级别与protected类似,不同之处在于,其他包定义的子类无法访问父类默认权限修饰的成员。
封装(encapsulation)
封装是指把对象的属性隐藏在对象的内部,不允许外部直接访问和修改。Java规范中的设置器和 访问器就是实现封装的标准方法,它们用于设置和获取对象的属性值。
设置器方法的命名一般以set作为方法名的前缀,以属性名作为后缀。
访问器方法的命名一般以get或is作为方法名称的前缀,以属性名作为后缀。对于boolean类型的属性,应该使用is前缀定义访问器 方法。例如:
public class Car {
private String color;
private boolean running;
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public boolean isRunning() {
return running;
}
public void setRunning(boolean running) {
this.running = running;
}
}
Object类
在Java中,所有的类都直接或间接继承了java.lang.Object类,它是所有类的父类。Object类中常用的两个方法为equals()和toString()方法。任何类都可以重写Object类中的方法。
Object类处于Java继承层次中的最顶端,它封装了所有类的公共行为。
Object类的equals()方法采用的是==运算比较,也就是只有两个引用变量指向同一对象时才相等。而实际上我们期望该方法进行对象的内容比较,因此子类中通常将equals()方法改写。
类的toString()方法返回对象的描述信息,在Object类中该方法返回对象的类名及对象引用地址。子类中通常要提供自己的toString()方法,以便更好地描述对象。
对象的创建与构造方法
类是创建对象的模板,而对象是类的实例。对象是一组属性和方法的封装体,创建对象要用到保留字new,对象的构造方法的语法格式为:
引用变量 = new 构造方法(参数)
有关构造方法有以下几点说明:
(1) 创建对象时将用到构造方法,系统自动调用参数匹配的构造方法为对象初始化。
(2) 构造方法的名称必须与类名同名,构造方法没有返回类型。
(3) —个类可提供多个构造方法,这些构造方法的参数不同。
(4) 如果程序中未提供构造方法,系统自动提供空的无参构造方法。
对象引用变量与对象关系
对象创建后,将对象的引用赋值给某个引用变量,就可以通过该变量访问对象的成员属性和方法,成员的调用通过“.”运算符实现,格式为:
对象名.属性
对象名.方法(参数)
静态空间与实例空间
带有static修饰的属性称为静态属性或类变量;带有static修饰的方法称为静态方法, 在静态方法内可以直接讨问静态属性或调用其他静态方法,静态属性在分配空间时与对象无关,静态空间的引用是与类关联的,一个类的静态属性成员只有一份,访问静态成员可以通过类名(在自己类中也可以直接访问),也可以通过对象。静态属性是共享的,该类的任何对象均可访问它。
【思考】静态属性归属类,因此必须指明是访问哪个类的静态成员,如果是在自己类中则可以省略,由于对象由类创建,自然对象能标识其所属类,因此也允许用对象做前缀访问静态属性。非静态属性也称实例变量,也就是说,要通过实际的对象才能访问,不同对象其实例变量的值通常是不同的。
Math类
Java 的 Math类包含了用于执行基本数学运算的属性和方法,如平方、对数、平方根和三角函数等。下表为 Math 类的一些常用方法。
例如:如何求取2 的3次方和0.5 的3次方?
Math.pow(x, y) 方法为Java 的幂运算,意思为求x的y次方,x和y可以是整型也可以是浮点型,该方法返回一个浮点型的值
例子:
double a = Math.pow(2, 3); // 求2的3次方,并将其赋值给一个double型的变量a
System.out.print(a);
执行结果:8.0
例如:如何求取 根号4?
Math.sqrt(x) 为Java 开平方的方法,意思为求x的平方根,x可以是整型也可以是浮点型,该方法返回一个浮点型的值。
例子:
double a = Math.sqrt(4);// 求4的平方根,并将其赋值给一个double型的变量a
System.out.print(a);
执行结果:2.0
Random类
在 Java 中有一个 Random 类,他可以在指定的取值范围内随机产生数字。要想使用 Random 类,第一步需要导入 java.util.Random 这个包。例如:
import java.util.Random;
第二步需要创建 Random 对象。
Random random = new Random();
创建完 Random 对象之后,我们就可以使用它提供的方法来创建随机数了。
,
代码示例:
public class RandomTest {
public static void main(String[] args) {
Random random = new Random();
System.out.println(random.nextInt(10));
System.out.println(random.nextFloat());
System.out.println(random.nextDouble());
}
}
第一次运行结果:
4
0.60541
0.7046691676099207
第二次运行结果:
3
0.055246472
0.47445795351116005
我们可以看到第一次运行结果和第二次运行的结果是不一样的。当我们想要第一次和第二次运行结果一致的话,可以在创建 Random 对象的时候传入一个Long 类型的数字,这个数字叫随机种子。具有相同随机种子的 Random 对象生成的随机数是一样的。
示例:
public static void main(String[] args) {
// 创建一个Random对象并传入随机种子
Random random = new Random(10);
System.out.println(random.nextInt(10));
System.out.println(random.nextFloat());
System.out.prin