对象和类

从认识的角度考虑是先有对象后有类。对象,是具体的事物。类,是抽象的,是对对象的抽象。

从代码运行角度考虑是先有类后又对象。类是对象的模板。

对象:对象是类的一个实例,有状态和行为。

:类是一个模板,它描述一类对象的行为和状态。

下图中男孩(boy)女孩(girl)、为类(class),而具体的每个人为该类的对象(object):

通过上图可以定义一个Java类:

/*
定义名为 Boy 的类,该类包含两个属性和两个行为
*/
public class Boy{
String name;//定义了名为 name 的 String类型属性
int age;//定义了名为 age 的 int类型属性 void run(){//定义了名为run的行为(方法)
} void walk(){//定义了名为walk的行为(方法)
} }

一个类可以包含一下类型变量

  • 局部变量:在方法、构造方法或者语句块中定义的变量,变量声明和初始化都是在方法中,方法结束后变量就会自动销毁。
  • 成员变量:成员变量是定义在类中,方法体之外的变量,这种变量在创建对象的时候实例化,成员变量可以被类中方法、构造方法和特定类的语句块访问。
  • 类变量:类变量也定义在类中,方法体之外,但必须是static修饰符修饰的变量。

一个类可以拥有多个方法,在上面的例子中:run()、walk()都是Boy类的方法。

构造方法:每个类都有构造方法。如果没有显示的为类定义构造方法,Java编译器将会为该类提供一个默认构造方法。

在创建一个对象的时候,至少要调用一个构造方法。构造方法的名称必须与类同名,一个类可以有多个构造方法。

下面示例,为上面的Boy类定义构造方法


public class Boy{
String name;
int age; void run(){
} void walk(){
} public Boy(){
//这是最简单的构造方法
} public Boy(String name){
//这个构造方法仅有一个参数:name
System.out.println("我的名字是:" + name)
}
}

创建对象

对象是根据类创建的。在Java中,使用关键字 new 来创建一个新的对象。创建对象需要一下三步:

  • 声明:声明一个对象,包括对象名称和对象类型。
  • 实例化:使用关键字 new 来创建一个对象。
  • 初始化:使用 new 创建对象时,会调用构造方法初始化对象。

下面是一个创建对象的例子:


public class A{
public A(String name){
//这是个只有一个参数的构造方法
System.out.println("我的名字是:" + name);
} public static void main(String[] args){
A myA = new A("type(光)");//这里用关键字 new 创建对象
}
}

编译并运行上面代码,会打印一下结果

我的名字是:type(光)

学习笔记:

为什么Java文件中只能含有一个public类?

Java程序是从一个 public 类的 main 方法开始执行的,就像 C 程序是从 main() 函数开始执行一样。只能有一个 public 类是

为了给类装载器提供方便。一个 public 类只能定义在以它的类名为文件名的文件中。

每个编译单元(文件)都有一个 public 类。因为每个编译单元都只能有一个公共接口,用 public 类来表现。该接口可以与文件

名相同(严格区分大小写)。当然一个编译单元内也可以没有 public 类。

类变量类型

public class A(){
int age;//成员变量 public static void main(String[] args){ }
}
public class A(){
static int age;//类变量 public static void main(String[] args){ }
}
public class A(){

  public static void main(String[] args){
int age;//局部变量
}
}

类的构造方法

  1. 构造方法的名字和类相同,可以有多个构造方法,并且没有返回值。
  2. 构造方法主要用于为类的对象定义初始化状态。
  3. 不能直接调用构造方法,必须通过关键字 new 来自动调用,从而创建类的实例
  4. Java的类都要求有构造方法,如果我们没有自己定义构造方法,Java编译器会默认提供一个无参数的构造方法。

new 关键字的作用

  1. 为对象分配内存空间。
  2. 引起对象构造方法的调用
  3. 为对象返回一个引用。

Java 学习:对象和类的更多相关文章

  1. Java学习——对象和类

    1. 入门例子 package jihite; public class Dog{ int dogage; public Dog(String name){ System.out.println(&q ...

  2. Java学习笔记之---类和对象

    Java学习笔记之---类和对象 (一)类 类是一个模板,它描述一类对象的行为和状态  例如:动物类是一个类,动物们都有属性:颜色,动物们都有行为:吃饭 public class Dog { Stri ...

  3. Java学习:Properties类

    Java学习:Properties类 学习目标 认识properties文件,理解其含义,会正确创建properties文件. 会使用java.util.Properties类来操作propertie ...

  4. Java学习:File类

    Java学习:File类 File类的概述 重点:记住这三个单词 绝对路径和相对路径 File类的构造方法 File类判断功能的方法 File类创建删除功能的方法 File类获取(文件夹)目录和文件夹 ...

  5. java学习一目了然——File类文件处理

    java学习一目了然--File类文件处理 File类(java.io.File) 构造函数: File(String path) File(String parent,String child) F ...

  6. Java学习笔记——File类之文件管理和读写操作、下载图片

    Java学习笔记——File类之文件管理和读写操作.下载图片 File类的总结: 1.文件和文件夹的创建 2.文件的读取 3.文件的写入 4.文件的复制(字符流.字节流.处理流) 5.以图片地址下载图 ...

  7. Java常见对象Object类中的个别方法

    Java常见对象Object类 public int hashCode() : 返回该对象的哈希码值. 注意:哈希值是根据哈希算法计算出来的一个值,这个值和地址值有关,但是不是实际地址值.你可以理解成 ...

  8. 快乐编程大本营【java语言训练班】 6课:用java的对象和类编程

    快乐编程大本营[java语言训练班] 6课:用java的对象和类编程 第1节. 什么是对象和类 第2节. 对象的属性和方法 第3节. 类的继承 第4节. 使用举例:创建类,定义方法,定义属性 第5节. ...

  9. Java的对象与类,继承

    Java的对象与类,继承 题目1.Java类的建立与使用 设计一个用来描述汽车的类,使用类的非静态成员变量来表示汽车的车主姓名.当前的速率和当前方向盘的转向角度,使用类的非静态成员方法来表示改变汽车的 ...

  10. 你真的了解JAVA中对象和类、this、super和static关键字吗

    作者:小牛呼噜噜 | https://xiaoniuhululu.com 计算机内功.JAVA底层.面试相关资料等更多精彩文章在公众号「小牛呼噜噜 」 目录 Java对象究竟是什么? 创建对象的过程 ...

随机推荐

  1. innodb引擎相关参数

    1.innodb_flush_log_at_trx_commit (双一标准之一) 作用:主要控制了innodb将log buffer中的数据写入日志文件并flush磁盘的时间点,取值分别为0.1.2 ...

  2. 'Rem EverythingAutoSetup.VBS 安装Everything的VBS脚本 2019年11月25日写

    'Rem EverythingAutoSetup.VBS 安装Everything的VBS脚本 2019年11月25日写 'Rem Everything是voidtools开发的一款本地NTFS文件和 ...

  3. ECDSA高性能硬件实现——算法详解与模块划分

    ECDSA全称椭圆曲线数字签名算法,它是基于素数域的椭圆曲线对信息进行加签与验签.其核心在于对信息的加签,及对加签的信息进行验签,那么下面介绍该算法流程. 假设Alice希望对消息m进行签名,并将消息 ...

  4. GooseFS助力大数据业务数倍提升计算能力

    前言 GooseFS是由腾讯云推出的一款分布式缓存方案,主要针对包括需要缓存加速的数据湖业务场景,提供基于对象存储COS服务的近计算端数据加速层. GooseFS 基于开源大数据缓存方案 Alluxi ...

  5. NTP\rsync+inotify

    NTP网络时间协议 NTP(Network Time Protocol)网络时间协议基于UDP,用于网络时间同步的协议,使网络中的计算机时钟同步到UTC(世界统一时间),再配合各个时区的偏移调整就能实 ...

  6. Vue+SpringBoot前后端分离中的跨域问题

    在前后端分离开发中,需要前端调用后端api并进行内容显示,如果前后端开发都在一台主机上,则会由于浏览器的同源策略限制,出现跨域问题(协议.域名.端口号不同等),导致不能正常调用api接口,给开发带来不 ...

  7. TCP拥塞控制详解

    1. 拥塞原因与代价 拥塞的代价 当分组的到达速率接近链路容量时,分组经历巨大的排队时延. 发送方必须执行重传以补偿因为缓存溢出而丢弃的分组. 发送方在遇到大时延时进行的不必要重传会引起路由器利用其链 ...

  8. kali虚拟机安装VMTools、更新源、安装docker、配置sqli-labs

    一.安装VMTools: 传送门:关于安装VMTools 跟其他版本的虚拟机安装VMTools没什么区别,也得连网(我是kali用dhcp开nat模式) 之后按照上面的链接根据博主的步骤一步一步来即可 ...

  9. HCNA Routing&Switching之广域网协议HDLC和PPP

    前文我们了解了地址转换技术NAT相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15168042.html:今天我们来聊一聊广域网中的两个二层封装协议H ...

  10. 程序员作图工具和技巧,你 get 了么?

    分享程序员常用的画图软件和小技巧 大家好,我是鱼皮. 说实话,我觉得做个程序员挺好的.日常工作有很多,写代码.对需求.写方案等等,但我最爱画图:流程图.架构图.交互图.功能模块图.UML 类图.部署图 ...