当前位置: 首页 > news >正文

Java小白进阶笔记(3)-初级面向对象

面向过程编程&面向对象编程

从面向过程到面向对象,不仅仅是编程方式的改变,更重要的是思维方式的改变。

面向过程编程
按照顺序执行的一系列指令,通常是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,最后一个一个依次调用函数来解决。

面向对象编程
从不同的角度来看待计算机程序,它注重的是计算机所完成的任务,而非处理方式。
从现实世界中客观存在的事物出发来构造软件系统,并在系统构造中尽可能运用人类的自然思维方式来思考问题,把问题中的事物分解为为系统中的对象,给对象赋予相应的属性和行为,通过多个对象的相互协调来解决问题,对象是系统的基本构成单位。

传统的C语言属于面向过程编程,Java语言属于面向对象编程。

ATM取款机程序的例子
面向过程编程:

输入密码,系统判断是否正确,如正确,进入取款界面,如错误,提示重新输入。
进入取款界面,输入取款金额,系统判断余额是否足够,如不足,提示;如足够,点钞。
吐出钞票,打印票据。
面向对象编程:
根据要解决的问题,可以抽象出如下对象:客户、银行卡、现金、票据等。
这些对象没有先后顺序,共同作用才构成了整个系统。
我们只要用代码设计出这几个类型的对象,然后让他们互相通信、传递消息就可以完成系统功能。

猪八戒吃西瓜的例子
面向过程编程:吃(猪八戒,西瓜)
面向对象编程:猪八戒.吃(西瓜)

作业

创建一个人类,该类需要有定义:
名字、体重、年龄三种属性(数据类型分别为:String,int,int),
还要定义吃饭、睡觉、打豆豆三种方法。
类中需要定义有参构造,需要通过有参构造把类中的三种属性初始化。

三种方法的规则:

吃饭:需要传递参数,并输出"xxx在吃饭"
睡觉:通过前面的有参构造初始化,输出"xxx在睡觉",xxx为名字(对象的属性),方法不用定义形参。
打豆豆: 通过前面的有参构造初始化,需要返回给调用者"xxx的体重是a,年龄是b",并在调用处输出。
注意:

xxx、a、b均为动态的,不是写死在代码里的。
输出的写法为:System.out.println("你好哇,这里是作业demo示例哟~~~");
需要在main方法中实例化三个人类的对象,分别设置与输出三个属性(名字、体重、年龄),并调用三个方法,其中把打豆豆方法的返回值打印出来。

我的解答

ps:Java初学者,如果你是高手就不用看(xiao)了(hua)(ノへ ̄、)

package test;

public class People {
    String name;
    int weight;
    int age;
    
    public People() {
        
    }
    public People(String name,int weight,int age) {
        this.name=name;
        this.weight=weight;
        this.age=age;
    }
    
    public void eat(String food) {
        System.out.println(name+"is eating"+food+"now !");
    }
    public void sleep() {
        System.out.println(name+"is sleeping now!");
    }
    public String hitdoudou() {
        return name+"的体重是"+weight+",年龄是"+age;
    }
}
package test;

public class Test {
    public static void main(String[] args) {
        People p1 = new People("Jack",152,21);
        p1.eat("apple");
        p1.sleep();
        String hit = p1.hitdoudou();
        System.out.println(hit);
    }

}

输出结果:

Jackis eatingapplenow !
Jackis sleeping now!
Jack的体重是152,年龄是21

相关文章:

  • Java事件处理机制
  • python__系统 : socket_UDP相关
  • 字符编码
  • 2017-07-14 数组学习 插入数字按顺序输出
  • python 基础总结复习
  • 网络相关以及防火墙
  • linux 优化
  • [Pyhton]weakref 弱引用
  • python之线程和进程(并发编程)
  • Linux系统小技巧(3):sar、last和dmesg的时间戳选项
  • Hibernate-ORM:07.Hibernate中的参数绑定
  • 老男孩教育每日一题-第96天-网站并发知识点:pv-并发与架构设计基础知识
  • Notepad++ 添加MarkdownViewerPlusPlus插件
  • ORACLE查询树型关系start with connect by prior
  • CentOS7安装Python3
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • AngularJS指令开发(1)——参数详解
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • LintCode 31. partitionArray 数组划分
  • orm2 中文文档 3.1 模型属性
  • Python爬虫--- 1.3 BS4库的解析器
  • react-native 安卓真机环境搭建
  • Spring Boot MyBatis配置多种数据库
  • Web Storage相关
  • windows下如何用phpstorm同步测试服务器
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 区块链共识机制优缺点对比都是什么
  • 如何使用 JavaScript 解析 URL
  • 06-01 点餐小程序前台界面搭建
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • ​如何防止网络攻击?
  • #单片机(TB6600驱动42步进电机)
  • (1)Android开发优化---------UI优化
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (安卓)跳转应用市场APP详情页的方式
  • (附源码)springboot宠物医疗服务网站 毕业设计688413
  • (十一)c52学习之旅-动态数码管
  • (五)c52学习之旅-静态数码管
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .NET BackgroundWorker
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .net framework4与其client profile版本的区别
  • .NET MVC第五章、模型绑定获取表单数据
  • .NET/C# 将一个命令行参数字符串转换为命令行参数数组 args
  • .NET实现之(自动更新)
  • ::before和::after 常见的用法
  • :not(:first-child)和:not(:last-child)的用法