学习-Java类和对象之构造⽅法与对象创建之求椭圆⾯积
任务描述
本关任务:已知椭圆的短半轴长为 15.50,长半轴的长为 20.00,计算椭圆⾯积。
椭圆的⾯积公式为S=πab,其中a、b分别为椭圆的短半轴长和长半轴长。
相关知识
为了完成本关任务,你需要掌握:
1. 类的构造⽅法;
2. 对象的创建与使⽤。
构造⽅法
在创建⼀个对象的时候,⾄少要调⽤⼀个构造⽅法。构造⽅法负责对象的初始化⼯作,为实例变量赋予合适的初始值。必须满⾜以下的语法规则:
⽅法名与类名相同;
不要返回类型(例如return、void等);
不能被static、final、native、abstract和 synchronized 修饰,不能被⼦类继承。
每个类都有构造⽅法。如果没有显式地为类定义构造⽅法,Java 编译器将会为该类⾃动添加⼀个默认构造⽅法(⽆参构造⽅法)。当我们⼿动的指定了构造⽅法时,系统将不会再添加⽆参的构造⽅法。
构造⽅法⼜分为⽆参构造⽅法和有参构造⽅法。⽆参构造⽅法如字⾯意思,它不需要传⼊参数。⽆参构造⽅法⼜分为隐式⽆参构造⽅法和显⽰⽆参构造⽅法。
隐式⽆参构造⽅法
在定义类的时候,如果没有给类定义⼀个构造⽅法,Java 编译器在编译时会默认提供⼀个隐式的构造⽅法,它没有任何参数,并且有⼀个空的⽅法体。
例⼦:
1. public class Person {
2. int age;
3. int weight;
4. double height;
5. // 隐式⽆参构造⽅法
6. public Person() {
7.
8. }
9.
10.
11. }
显式⽆参构造⽅法
隐式⽆参构造⽅法是由系统提供的,⽆法修改其内容。但有时需要在调⽤这个构造⽅法时,初始化类成员属性或执⾏⼀些操作,要实现这个需求,就需要为它定义⼀个显式⽆参构造⽅法。
1. public class Person {
2. int age;
3. double weight;
4. double height;
5. // 显⽰⽆参构造⽅法,⾃⼰定义的,⽅法名必须和类名⼀致。
6. public Person() {
7. this.age = 18;
8. this.weight = 55.3;学习java的学习方法
9. this.height = 1.80;
10. }
11. }
显⽰有参构造⽅法
构造并初始化对象是构造⽅法的⽤处,所以有时需要给这个⽅法传⼊⼀些参数,定义⼀个显⽰的有参构造⽅法。例如:
1. public class Person {
2. int age;
3. double weight;
4. double height;
5.
6. // 显⽰⽆参构造⽅法,⾃⼰定义的,⽅法名必须和类名⼀致。
7. public Person() {
8. this.age = 18; // 将实例变量age的值初始化为18
9. this.weight = 55.3; // 将实例变量weight的值初始化为55.3
10. this.height = 1.80; // 将实例变量height的值初始化为1.80
11. }
12.
13. // 显⽰有参构造⽅法⾃⼰定义的,⽅法名必须和类名⼀致,需要携带参数。
14. public Person(int age, double weight, double height) {
15. this.age = age; // 实例变量age的值初始化为传来的参数age的值
16. this.weight = weight; // 实例变量weight的值初始化为传来的参数weight的值
17. this.height = height; // 实例变量height的值初始化为传来的参数height的值
18. }
19. }
对象的创建与使⽤
类定义完成之后,肯定⽆法直接使⽤。如果要使⽤,必须依靠对象,那么由于类属于引⽤数据类型,所以对象的创建⽅式有如下两种:1. 声明并实例化对象;
1. 类名称对象名称 = new 类名称 () ;
1. 类名称对象名称 = null ;
2. 对象名称 = new 类名称 () ;
引⽤数据类型与基本数据类型最⼤的不同在于:引⽤数据类型需要进⾏内存的分配和使⽤。所以,关键字 new 的主要功能就是分配内存空间,也就是说,只要使⽤引⽤数据类型,就要使⽤关键字 new 来分配内存空间。
例⼦:
1. public class Person {
2. int age;
3. double weight;
4. double height;
5.
6. public Person() {
7. this.age = 18; // 将实例变量age的值初始化为18
8. this.weight = 55.3; // 将实例变量weight的值初始化为55.3
9. this.height = 1.80; // 将实例变量height的值初始化为1.80
10. }
11.
12. // 显⽰有参构造⽅法,⾃⼰定义的,⽅法名必须和类名⼀致,需要携带参数,携带多少参数可以⾃⼰控制。
13. public Person(int age, double weight, double height) {
14. this.age = age; // 实例变量age的值初始化为传来的参数age的值
15. this.weight = weight; // 实例变量weight的值初始化为传来的参数weight的值
16. this.height = height; // 实例变量height的值初始化为传来的参数height的值
17. }
18.
19. public static void main(String[] args) {
20. Person person = new Person(); // 调⽤⽆参构造⽅法实例化(创建)⼀个person对象。
21. // 或者
22. Person person1 = new Person(18,52.8,69.72); // 调⽤有参构造⽅法实例化(创建)⼀个person1对象。
23. }
24.
25. }
当⼀个实例化对象产⽣之后,可以按照如下的⽅式进⾏类的操作:
对象.属性:表⽰调⽤类之中的属性;
对象.⽅法():表⽰调⽤类之中的⽅法。
例⼦:
1. public class Person {
3. double weight;
4. double height;
5.
6. public Person() {
7. this.age = 18;
8. this.weight = 55.3;
9. this.height = 1.80;
10. }
11. public Person(int age, double weight, double height) {
12. this.age = age;
13. this.weight = weight;
14. this.height = height;
15. }
16.
17. public void play(char a){
18. System.out.printf("我喜欢玩%c\n",a);
19. }
20.
21.
22. public static void main(String[] args) {
23. Person person = new Person(); // 调⽤⽆参构造⽅法实例化(创建)⼀个person对象
24. int a = person.age; // 获取Person类中的属性age的值
25. System.out.println(a);
26. person.weight = 60.0; // 修改Person类中的属性weight
27. System.out.println(person.weight);
28. char b = '球';
29. person.play(b); // 调⽤Person类中的play⽅法,将参数传⼊该⽅法
30. Person person1 = new Person(20,52.8,69.72); // 调⽤有参构造⽅法实例化(创建)⼀个person1对象
31. System.out.println(person1.age);
32. System.out.print(person1.weight);
33.
34. }
35.
36. }
执⾏结果:
1. 18
2. 60.0
3. 我喜欢玩球
4. 20
/
**
* 任务:已知椭圆的短半轴长为20.00,长半轴的长为15.50,计算椭圆⾯积。
* 类名为:EllipseArea
*/
// 请在下⾯的Begin-End之间按照注释中给出的提⽰编写正确的代码
/********** Begin **********/
// 创建⼀个名为 EllipseArea 的公开类
public class EllipseArea {
// 定义椭圆的两个属性:短半轴长和长半轴长
double a;
double b;
/
/ 定义⼀个显⽰有参构造⽅法,携带两个参数,分别表⽰为传来的短半轴的值和长半轴传来的值 public EllipseArea(double a,double b){
this.a = a;
this.b = b;
}
// 该⽅法实现将短半轴长和长半轴长分别初始化为携带的两个参数的值。
// 定义⼀个⽅法,该⽅法实现计算椭圆的⾯积,并将其返回,返回值类型为double
public double area(){
return Math.PI * a * b;
}
// 定义主⽅法
public static void main(String[] args) {
// 在主⽅法中通过有参构造⽅法实例化⼀个对象,将椭圆的短半轴的值和长半轴的值传⼊其中 EllipseArea ellipseArea = new EllipseArea(15.50,20.00);
// 调⽤计算椭圆的⾯积的⽅法,计算该椭圆的⾯积
ellipseArea.area();
// 将计算后的结果四舍五⼊保留两位⼩数后输出,输出格式为:椭圆形的⾯积为xx
System.out.print("椭圆形的⾯积为" + String.format("%.2f",ellipseArea.area()));
}
}
/********** End **********/
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论