Java语言快速上手之类与对象

Gradle快速上手——从Maven到Gradle 【本文写作于2018年7月5日】本文适合于有一定Maven应用基础,想快速上手Gradle的读者。背景Maven、Gradle都是著名的依赖管理及自动构建工具。提到依赖管理与自动构建,其重要性在当今软件环境下不言而喻,Maven也是红极一时。Maven采用约定大于配置的思想,约定了工程结构,生命周期,采用严谨的XML格式进行构建脚本编写,显著地提升了软件构建的效率。但当软件越来越复杂后,大家突然发... 阅读详情

一.面向对象编程

按照博主的理解,编程是一个对客观世界建立模型的过程。面向对象编程就是把客观世界的事情看做是对象的沟通,而各个对象划分为不同的种类。
与面向过程相比,这种方法更适合于大型项目的构建与开发。更适合与多人协作模型。
就比如说,要对一个学校的人数统计然后分类然后对于各类做处理做一个程序。在C程序思考中,我们会把数据类型与函数分开,函数接受一个名单数组,然后对于名单数组里的名字进行遍历然后分类。然后返回很多数组,表示分类。然后再编写处理函数,虽然这些过程在现实联系紧密,但在我们的程序中这些过程之间关系并不紧密。
而对于面向对象来说,我们更应该考虑有一个学校对象,里面有很多人对象分成学生对象,教师对象,有一个方法能够在学校对象内分类各种人对象,又有一些方法能够处理对象分类。这样就把我们关系很密切的方法联系在了一起。我们要做的就是告诉学校类去分类。
在面向对象中
1.万物都是对象
2.程序是对象的集合
3.每个对象都包含其他对象
4.每个对象都有类型
5.每个特定类型对象都可以接受消息,做出反应(对人对象要求的分类可以学生对象和老师对象可以回应)
而类就是我们抽象出来的对象分类,比如张三对象和李四对象,我们在学校分类时不考虑具体的姓名,于是我们只需要定义一个学生类创建两个学生类的对象就可以了。
面向对象能够实现的重要因素是,所有程序都是对现实的一种仿真,现实世界可以表述为物体的相互作用,所以面向对象考虑符合这种表达。

二.类的定义

我们定义一个类,我们要定义两部分的内容。比如我们要定义一个人的类,他得有名字,他得会说话,他得有性格,他得会有心理活动
上面分为两个部分,有什么,会什么。
有什么就是类的字段,或者叫属性,会什么就是类的方法。
定义类就要定义属性和方法。
我们再考虑一下,一个人的性格是不能被直接让外部了解的。一个人的心理活动外部也是不能读取的,所以类的这两个应该拒绝外部调用,就是私有的。
定义类使用class+类名的方式,后跟{}定义属性和方法。
{}内部定义的属性可以是别的类,对于外部访问的限定可以加上private,public关键字。

class People
{
    public String name;
    private String character;
    public String speak()
    {....}
    private String think()
    {}
}

详细访问限定会以后写到。

三.对象的创建

对象的创建使用new 对象名创建();

new student();

但这样创建的对象我们无法拿去使用,这时候我们就需要为他创建一个标识符。对象的引用,对象的引用指向我们实际的对象,而不同的引用可以对应一个对象。标识符之间的赋值还是对应一个对象。但都是A。

   class People
   {
      String name;
      void Setname(String a)
      { 
         name = a;
      }
      String Getname()
      {
         return name;
      }
   } 
  People zhangguoqing = new People("zhangguoqing");
  People shadiao = zhangguoqing;
  shadiao.setname("shadiao");
  System.out.println(zhanguoqing.getname());
 //Output:shadiao

在这里我们明明只修改了shadiao可是zhangguoqing也被修改了,这就是因为两个引用引用的同一个对象。
在Java中永远不用销毁对象,这是由Java虚拟机自动完成的,不需要用户操心。

四.类的关系

类之间不是相互独立的,对象张三是一个学生,学生属于人的一种。对象张三内部有心脏对象,对象张三的行为被大脑对象控制。
这就是类的继承,组合,复用
继承关系是is-a,人是学生。
组合关系是has-a,学生有心脏
代理关系Java中没有明确方法,但可以通过继承组合模拟。
创建一个对象的继承类用class A extends B表示A类是B类特例。
创建对象的组合,A类的属性有B类。
其中继承后A类可以调用B类的任何public方法,A对象也可以赋给B类的引用。
问题是两个类中同名方法怎么办,这就是多态部分的内容了。过几天就会在新的博客中阐述。

class A
{
   public void greet()
   {
     System.out,println("I am A");
   }
}
class B extends A{}
class C{};
  A a = new B();
  B b = new B();
  //C c = new B(); Complier Error
  //B b = new A();Complier Error
  a.greet();
  b.greet();
//Out I am A 
//Out I am A

我们可以看出B类没有定义任何方法,B类可以调用greet方法,而且B类对象可以赋给A引用。就好比说,我想要一个人,你当然可以从学校里找一个学生,可你不能找一只狗。
但是A类对象不能赋值给B类引用,我想要一个学生,你不能给我随便来一个人。
Java中继承只有单继承,理解is-a关系就可以准确掌握继承,后面会说的接口与多态是继承的特殊情况。以后再说,现在就只要把握is-a就可以。

Go语言快速入门指南(面向Java工程师) Go(又称 Golang)由 Google 开发,2009 年发布。简洁:语法元素少(25 个关键字 vs Java 的 50+)。高效:编译为原生机器码,无需虚拟机。并发:goroutine + channel 内置支持并发。工程化:标准库强大,依赖管理简单。与 Java 的核心区别编译方式:Java 运行在 JVM 上,Go 直接编译为机器码。面向对象模型:Java 有类和继承,Go 用 struct + 接口 + 组合。并发模型。 阅读详情

相关推荐

java程序员快速上手项目,附源代码

搞Java怎么玩深度学习,生产环境用DL4J啊克隆项目,用我们熟悉的集成开发环境测试examples。熟悉Java的小伙伴都能轻松上手。它是将模型和Java应用程序集成,以便提供了一组组件,从而用于构建基于JVM的同时又包含人工智能的应用程序。 如果你是Java工程师或程序员,想快速入门深度学习吗?不妨关注一下这个DL4J库。 实在智能RPA告诉你那些学习RPA的程序员现在过的怎么样了Java。根据RPA开发的特殊性,自动化流程的效益特点强调短平快,所以在实施的时候基本都是单兵作战,那么RPA人员所具

神经网络爱好者 4161

【Go语言快速上手(一)】 初识Go语言

本篇文章着重讲解了GO语言的简介以及为什么要学习GO语言,后面讲解了GO语言的一些语法特性以及GO语言的变量与数据类型是怎样定义的

杭电码农-NEO的博客 3374

MCGS 昆仑通态触摸屏 modbus TCP 数据转发

MCGS触摸屏数据转发modbus TCP数据转发

m0_63451859的博客 2万+

Java语言快速上手

写这个博客,是我的老朋友建议的。他希望我能写一写博客来介绍Java语言,虽然我也是个二把手,但我也想写一写。这篇博客会把Java和c捆绑在一起类比介绍。但肯定会损失Java编程的很多好处,可是没关系,这篇文章就是为了Java能够直接上手。先是把C语言中概念比照一下Java,让人直接上手,燃起对Java乐趣。 一.类 Java中的类有点儿像C语言中结构体,我们可以把类当作一种特殊的自定义结构体,但是...

wangbichen的博客 461

防火墙旁挂组网

分析拓扑结构,涉及路由器、交换机、防火墙。步骤包括基础 IP 配置、OSPF、防火墙双机热备、安全策略等。第一步,路由器配置。R5、R6 连接 ISP 和核心交换机,配置接口 IP,然后 OSPF。然后防火墙,双机热备的 HRP、VRRP,还有安全策略。接着交换机,划分 VLAN,配置 TRUNK,加入 OSPF。

weixin_73298423的博客 904

基于Python的MGWR多尺度地理加权回归模型

多尺度地理加权回归(MGWR)变量之间的关系在地理空间上不是均一的,所有特征变量的影响都在不同的空间范围(带宽)内变化,某些变量可能表现出局部性影响(小带宽),某些变量可能表现出全局性影响(大带宽),通过优化每个特征变量的带宽,捕捉到空间关系的多尺度特性,得到更细致的模型解释。

weixin_61965078的博客 3855

Java快速入门之类、对象、方法

1. 类和对象1.1 类和对象的理解客观存在的事物皆为对象 ,Java中万物皆对象。类类的理解类是对象的数据类型,类是具有相同属性和行为的一组对象的集合,相当于现实生活中一类具有共同属性和行为的事物的抽象类的组成属性:指事物的特征,例如:手机的品牌之类行为:指事物能执行的操作,例如:打电话类和对象的关系类是对事物的一种描述,对象则为具体存在的事物1.2 类的定义类的组成是由属性和行为两部分组成属性:在类中通过成员变量来体现(类中方法外的变量)

weixin_46239998的博客 991

Ubuntu20.04系统笔记本网卡AX211无法找到wifi问题

之前电脑的系统是18.04基本上安装好了系统,可以直接连上wifi,在买了拯救者y9000p2022版本之后,因为网卡太新,安装ubuntu18.04或者20.04之后会没有wifi连接,非常不方便。于是上网找了各种帖子去解决这个问题。具体实现有所不同。 主要参考了这个帖子来解决的:http://t.csdn.cn/7807R 首先: sudo apt install flex bison 然后: git clone https://github.com/intel/backpor.

weixin_42825962的博客 1万+

从c语言转至Java如何快速上手(java学习tips)

这里把country定义为static,并且赋值为“大清”,在下面main函数中只改p1.country的数值,则p2.country也会改。但是并不推荐这样改,建议还是用class名字改,也就是Person.country。(见上面五中的4)。简单来说,static定义之后,这个东西就固定在这里了,没有所属。调用它的时候也不需要带上实例的对象名。省流版:抽象,在这里指的是两个部分,分别是抽象class,以及抽象方法,这两个都需要加上abstract前缀。

Everybodynow的博客 1624

MCP4728 电路及stm32F103程序移植

写在前面 通过优快云查到一些MCP4728 的程序,结合程序及datasheet对于驱动的描述,理清了思路 感谢开路者! MCP4728的电路比较简单,见下文描述 应用电路 datasheet: 实际测试电路: SCL接stm32的PB10,SDA接PB11 RDY/BSY引脚和LDCA引脚,悬空 解释见截图: MCP4728地址 选择任意输出通道写入DAC输入寄存器 应用程序 int mcp4728_write_all_channel(float vol1, float vol2, fl

u013074298的专栏 5428

SystemRDL:从寄存器描述到自动化生成的完整指南

本文详细介绍了SystemRDL如何通过“一份描述,多处生成”的理念,彻底解决芯片与FPGA设计中手动维护寄存器带来的不一致与低效问题。文章提供了从语言快速上手、核心组件讲解到使用PeakRDL工具链实现自动化代码与文档生成的完整实战指南,帮助硬件工程师构建高效、可靠的寄存器开发流程。

weixin_29243279的博客 664

【JAVA基础】由C++快速上手Java(超详细)

JavaSE基础课程涉及到的很多内容在学习C++的过程都有涉及,在这里做一个由C++基础开始学习java的快速入门经验总结。

2301_76391858的博客 2662

基于微信小程序的智能门禁管理系统的设计与实现(文章+源码)

基于微信小程序门禁管理小程序,该系统支持用户注册登录、查阅新闻动态、提交开门申请和发布留言等功能,同时管理员可以进行用户管理、新闻信息管理、门禁审批管理和留言管理等操作。该系统将采用IDEA开发工具、SSM框架和MYSQL数据库等相关技术,实现用户登录注册、个人信息管理、门禁申请提交、管理员审核等功能。该系统的实现,可以有效提高门禁管理的效率和便利性,同时也具有较强的可扩展性和可维护性。本研究对于智能门禁管理系统的设计和实现具有一定的参考价值。

u011779145的博客 1401

从Java到Go:理解转变的必要性与快速入门Go语言

Go语言简介Go语言的特点和优势Go与Java的比较安装和配置Go环境安装Go语言的步骤配置GOPATH和GOROOTGo语言基础Go的基本语法数据类型和变量控制结构(if-else, for, switch-case)Go的并发模型Goroutines和并发通道(Channels)的使用Go的包管理包的概念和使用常用的Go标准库介绍面向对象编程在Go中的实现结构体和方法接口的概念错误处理和日志Go中的错误处理机制日志库的使用实践项目实现一个简单的Web服务器。

好好学习日记 3088

Wi-Fi QoS中AIFSN/CWmin/CWmax/TxOP参数是怎样计算的?

802.11e/WMM的EDCA机制通过AIFS、CWmin/CWmax和TxOP三组参数实现业务优先级控制。AIFS决定最短等待时间(AIFS=SIFS+AIFSN×SlotTime),CWmin/CWmax定义退避范围(2^ECW-1),TxOP设置最大占用时长(32µs单位)。默认配置中,语音业务(VO)优先级最高,其AIFSN最小(2)、CW范围最小(3-7)、TxOP适中(1.504ms);视频(VI)次之;普通数据(BE)和后台(BK)优先级最低。调优需根据网络特性调整参数:VoIP可降低AIF

1042484520@qq.com(邮箱) 1747

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

java之类与对象

一,面向对象 1,面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。 面向过程关注因果关系,关注实现过程,集成显卡的开发思路. 优点:对于业务逻辑简单的程序可以达到快速开发;前期投入成本低 缺点:很难解决非常复杂的业务逻辑;软件元素间的耦合度高,一环出现问题整个系统都会受影响,软件扩展性差;没有独立概念,无法达到组件复用; 2,面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行

好好学习,天天向上的博客 220

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Java开发者的Python快速上手指南

本文为Java开发者提供Python快速上手指南,从核心差异、语法对比和面向对象编程等方面进行对比。核心差异包括:Java是静态强类型,需声明类型;Python是动态强类型,变量即标签。语法上,Python更简洁,使用缩进替代大括号,支持f-string和推导式等高级特性。面向对象编程中,Python类定义更简单,支持多重继承。Java开发者需转变思维,适应Python的动态特性和简洁语法风格。

qq_73643693的博客 1204

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

快速上手c语言

c语言绝大多数知识点,作为整体了解应该足够

m0_73693552的博客 1308

快速上手JAVA

前言 如果大家反应不错,需要的话我可以后续再出视频教程 本课程适合人群: 有其他语言基础想要快速上手Java 大学生想要快速学习这门语言做毕业设计 不过分追求基础与底层 工作中需要以最快的速度学会使用Java 不适合人群: 想要彻底吃透Java 指望学完这个就能面试拿高工资 知识点 跟着这门课程,会快速覆盖以下知识点 JDK基本环境 Spring Boot mybatis maven docker 目录 此课程是边写边补充,目前大概的思路,后期会根据内容调整目录 基础环境搭建

xuquan213的博客 2031

Java开发快速上手

Java开发快速上手 前言 1.我的大学 2.对初学者的建议 3.大牛的三大特点 4.与他人的差距 第一章 了解Java开发语言 前言 基础常识 1.1 什么是Java 1.1.1 跨平台性 1.2 如何搭建Java运行环境 1.2.1 了解JDK与JRE 1.2.2 jdk下载与安装 1.2.3 配置开发环境 1.3 如何写Java代码 1.3.1 我的第一个Java程序 1.5 注解的使...

weixin_34248705的博客 481

掌握新编程语言的秘诀:利用 AI 快速上手 Python、Go、Java 和 Rust

在程序员的日常工作中,学会一门新的编程语言已经变成了常态。但这不是一件简单的事,尤其是从一门语言跳到另一门语言时,思维方式的转换往往让人摸不着头脑。本文将结合实际场景,探讨如何通过 AI 辅助学习快速上手新语言,尤其是在从 Python 跳到 Go,或者从 Java 跳到 Rust 的过程中,如何通过 AI 提高学习效率。

记录从移动端、鸿蒙到物联网与AI的完整实战与思考。专注于分享可复用的工程方案与产品思维,尤其深入鸿蒙生态与全栈开发。以十年工程与管理沉淀,为你提供清晰的技术纵深路径。坚信技术的价值在于“贯通”与“落地”。 1511

[Go语言快速上手]初识Go语言

Go语言,通常被称为Golang,是一种静态类型、编译型的计算机编程语言。它由Google的Robert Griesemer、Rob Pike及Ken Thompson等设计,并于2009年正式发布。Go语言的设计目标是为了与C++相比,Go语言的设计更加现代,简化了很多C++中复杂的特性,同时提供更好的开发体验和更高的生产率。C++是一种功能强大且灵活的语言,支持面向对象编程、泛型编程以及过程化编程,但是它的学习曲线较陡峭,且容易出现内存管理和类型安全方面的问题。

decade777555的博客 1877

Java是一门面向对象的程序设计语言

1、什么是程序设计? 程序设计是对复杂性的管理,待解决问题的复杂性,以及用来解决该问题的工具的复杂性。将一个问题抽象出来,并且用编程语言将这个问题解决,这就是程序设计。而人们能够解决的问题的复杂性直接取决于抽象的类型和质量,类型指的是抽象的是什么?质量指的是抽象的程度。 抽象出要解决的问题,通过编程语言让计算机实现对应的功能。 2、什么是编程语言? 编程语言之于计算机,类似英语对于美国人。...

StuLoveQ的博客 6129

Java语言与lua的区别_5分钟带你快速了解Lua语言

一般工作多年的程序员都是了解多种计算机语言的,比如java,c,php等,我列出的是常见的,当然也有的知道python,c#,Objective-C,每个语言都有着自己的特点和亮点,没有说哪种语言最好,那种语言最好,只不过是在不同场景下适合用某种语言而已,今天我要说的是Lua语言,那么咱废话不多说,直接开始吧!图片来之互联网Lua语言的介绍lua是一种脚本语言,用C语言编写,源码开放,其设计目的是...

weixin_42526068的博客 2992
上一篇: Java语言快速上手
下一篇: Java设计模式原则
入过栈你
博客等级 码龄7年 2粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值