任务描述

本关任务:已知椭圆的短半轴长为 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. }

显式无参构造方法

隐式无参构造方法是由系统提供的,无法修改其内容。但有时需要在调用这个构造方法时,初始化类成员属性或执行一些操作,要实现这个需求,就需要为它定义一个显式无参构造方法。


  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;
  9. this.height = 1.80;
  10. }
  11. }

显示有参构造方法

构造并初始化对象是构造方法的用处,所以有时需要给这个方法传入一些参数,定义一个显示的有参构造方法。例如:


  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. public Person(int age, double weight, double height) {
  13. this.age = age; // 实例变量age的值初始化为传来的参数age的值
  14. this.weight = weight; // 实例变量weight的值初始化为传来的参数weight的值
  15. this.height = height; // 实例变量height的值初始化为传来的参数height的值
  16. }
  17. }

对象的创建与使用

类定义完成之后,肯定无法直接使用。如果要使用,必须依靠对象,那么由于类属于引用数据类型,所以对象的创建方式有如下两种:

  1. 声明并实例化对象;

    
    
    1. 类名称 对象名称 = new 类名称 () ;
  2. 先声明对象,然后实例化对象;

    
    
    1. 类名称 对象名称 = null ;
    2. 对象名称 = new 类名称 () ;

引用数据类型与基本数据类型最大的不同在于:引用数据类型需要进行内存的分配和使用。所以,关键字 new 的主要功能就是分配内存空间,也就是说,只要使用引用数据类型,就要使用关键字 new 来分配内存空间。

例子:


  1. public class Person {
  2. int age;
  3. double weight;
  4. double height;
  5. public Person() {
  6. this.age = 18; // 将实例变量age的值初始化为18
  7. this.weight = 55.3; // 将实例变量weight的值初始化为55.3
  8. this.height = 1.80; // 将实例变量height的值初始化为1.80
  9. }
  10. // 显示有参构造方法,自己定义的,方法名必须和类名一致,需要携带参数,携带多少参数可以自己控制。
  11. public Person(int age, double weight, double height) {
  12. this.age = age; // 实例变量age的值初始化为传来的参数age的值
  13. this.weight = weight; // 实例变量weight的值初始化为传来的参数weight的值
  14. this.height = height; // 实例变量height的值初始化为传来的参数height的值
  15. }
  16. public static void main(String[] args) {
  17. Person person = new Person(); // 调用无参构造方法实例化(创建)一个person对象。
  18. // 或者
  19. Person person1 = new Person(18,52.8,69.72); // 调用有参构造方法实例化(创建)一个person1对象。
  20. }
  21. }

当一个实例化对象产生之后,可以按照如下的方式进行类的操作:

  • 对象.属性:表示调用类之中的属性;

  • 对象.方法():表示调用类之中的方法。

例子:


  1. public class Person {
  2. int age;
  3. double weight;
  4. double height;
  5. public Person() {
  6. this.age = 18;
  7. this.weight = 55.3;
  8. this.height = 1.80;
  9. }
  10. public Person(int age, double weight, double height) {
  11. this.age = age;
  12. this.weight = weight;
  13. this.height = height;
  14. }
  15. public void play(char a){
  16. System.out.printf("我喜欢玩%c\n",a);
  17. }
  18. public static void main(String[] args) {
  19. Person person = new Person(); // 调用无参构造方法实例化(创建)一个person对象
  20. int a = person.age; // 获取Person类中的属性age的值
  21. System.out.println(a);
  22. person.weight = 60.0; // 修改Person类中的属性weight
  23. System.out.println(person.weight);
  24. char b = '球';
  25. person.play(b); // 调用Person类中的play方法,将参数传入该方法
  26. Person person1 = new Person(20,52.8,69.72); // 调用有参构造方法实例化(创建)一个person1对象
  27. System.out.println(person1.age);
  28. System.out.print(person1.weight);
  29. }
  30. }

执行结果:


  1. 18
  2. 60.0
  3. 我喜欢玩球
  4. 20
  5. 52.8
/*** 任务:已知椭圆的短半轴长为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;}
// 该方法实现将短半轴长和长半轴长分别初始化为携带的两个参数的值。
// 定义一个方法,该方法实现计算椭圆的面积,并将其返回,返回值类型为doublepublic double area(){return Math.PI * a * b;}
// 定义主方法public static void main(String[] args) {
// 在主方法中通过有参构造方法实例化一个对象,将椭圆的短半轴的值和长半轴的值传入其中EllipseArea ellipseArea = new EllipseArea(15.50,20.00);
// 调用计算椭圆的面积的方法,计算该椭圆的面积ellipseArea.area();
// 将计算后的结果四舍五入保留两位小数后输出,输出格式为:椭圆形的面积为xxSystem.out.print("椭圆形的面积为" + String.format("%.2f",ellipseArea.area()));}
}
/********** End **********/

学习-Java类和对象之构造方法与对象创建之求椭圆面积相关推荐

  1. Educoder-Java类和对象之构造方法与对象创建之求椭圆面积

    其实一开始我是懵逼的,因为第一次在一个类中建立构造方法,并且同时建立main方法,看起来运行没问题,但总感觉别扭,可能知识点抓的还有问题 掌握知识点 构造方法的运用 对象的创建与使用 通关源码 pub ...

  2. java中蛇的属性有哪些_学习Java类的属性

    学习Java类的属性-武汉北大青鸟 Public.private.protected显示了三种类中的属性和服务的类型,public是可以随意访问的.private是外界不能访问的(显示了数据的封装性) ...

  3. java面向对象的概念,Java类、引用变量与堆对象

    一,面向对象概念 1.类型(类) 指一个名词概念,如:老师,学生,图书 2.引用(变量) 指引用具体概念实例的代词,如:某人.某物 3.对象(东西) 指具体概念的个体实例,如:张无忌这个人. 4.行为 ...

  4. 学习-Java类和对象之static关键字之求圆环面积和周长

    任务描述 本关任务:已知圆环的大圆半径 R 和 小圆半径 r 的长度分别为 32.0 和 10.0,求该圆环的面积和周长. 圆环面积公式为:S=π(R2−r2): 圆环周长公式为:C=2π(R+r). ...

  5. 学习-Java类和对象之参数传值机制之求球面积

    任务描述 本关任务:已知一个球的半径为 12.0,求该球的表面积. 球的表面积计算公式:S=4πR2,R为球的半径. 相关知识 为了完成本关任务,你需要掌握: 基本数据类型参数的传值: 引用类型参数的 ...

  6. java muki_再次学习 java 类的编译

    做JAVA开发的都知道myeclipse, 我们在myeclipse中新建一个类,然后保存, 如何正常的话,那么在项目指定的目录(也就是项目的output目录)就会生成同名的class文件, 可是,我 ...

  7. 【Java】第7章 Java 类和对象 头歌Educoder实训作业(七)

    第1关:练习-Java类和对象之类的声明之复数运算 任务描述 本关任务:求两个复数相加后的结果. 两个复数之间相加的运算法则:实部与实部相加,虚部与虚部相加. 关于复数的定义,可以自行查阅,本实训不做 ...

  8. java类与对象(超详细!)

    3. 类与对象 3.1 面向对象编程三特性: 封装 继承 多态 3.2 类的编写 java是面向对象语言,类是基本要素,一个java程序就是由若干类组成. 何为对象?对象就是用类声明的变量. 如何编写 ...

  9. Java类与对象(汇总版),心血作品,走过路过不要错过

    目录 1.Java中类定义和使用 2.类的实例化 2.1什么是实例化 2.2访问类中的属性和方法 2.3成员变量默认值 3.this引用 3.1为什么要用this引用 3.2this引用特性 3.2t ...

最新文章

  1. scikit-learn - 分类模型的评估 (classification_report)
  2. c语言设计一个万年历的需求分析,万年历设计报告
  3. python程序设计语言的执行方式_编程语言用Python执行程序的4种方式
  4. 极速理解设计模式系列:6.适配器模式(Adapter Pattern)
  5. WeTool V6.0.0免费版多功能微信好有管理软件
  6. 服务器的系统盘存储,云服务器 系统盘 存储盘
  7. 在sealos搭建的k8s集群中自定义kubeconfig文件
  8. 二叉树 平衡二叉树 红黑树_迅捷树,二叉树
  9. ubuntu 无法识别Usb
  10. 网络安全设备Bypass功能
  11. List集合排序、自定义比较器排序
  12. python: 校园网登录脚本
  13. 操作系统基础教程——第六章课后答案
  14. python复利计算_python复利代码
  15. 榕树贷款 探索人工智能技术 打造金融机构转型新引擎
  16. Excel - 选择性粘贴和单元格引用规则
  17. 角点检测的几种基本方法
  18. JS学习20:for..in 循环遍历对象
  19. 通过Python自动压缩文件并发送邮件
  20. 西北工业大学计算机学院801考纲

热门文章

  1. C语言入门(什么是C语言,C语言的编程机制以及一些基础计算机概念)
  2. 阿里开源自研工业级稀疏模型高性能训练框架 PAI-HybridBackend
  3. Android才是游戏开发者的乐土
  4. JS 删除对象(Object)中的键值对
  5. layui 关闭当前弹出窗口
  6. 《拖延心理学》思维导图精华版
  7. Docker镜像瘦身与优化
  8. R语言时代,你要怎样画地图?
  9. Traccar记录足迹-服务搭建及使用
  10. Jaeger知识点补充