对象和类

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

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

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

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

下图中男孩(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. [NOI 2021] 轻重边 题解

    提供一种和不太一样的树剖解法(一下考场就会做了qwq),尽量详细讲解. 思路 设重边为黑色,轻边为白色. 首先,先将边的染色转化为点的染色(即将 \(u\) 节点连向父节点的边的颜色转化为 \(u\) ...

  2. Hashtable 的实现原理

    概述 和 HashMap 一样,Hashtable 也是一个散列表,它存储的内容是键值对. Hashtable 在 Java 中的定义为: public class Hashtable<K,V& ...

  3. Moonraker靶机

    仅供个人娱乐 靶机搭建与下载 Monraker靶机ip: 192.168.181.135 kali攻击者ip : 192.168.181.128 说明:获取目标主机的root权限并读取目录中的flag ...

  4. BSTestRunner增加历史执行记录展示和重试功能

    之前对于用例的失败重试,和用例的历史测试记录存储展示做了很多的描述呢,但是都是基于各个项目呢,不方便使用,为了更好的使用,我们对这里进行抽离,抽离出来一个单独的模块,集成到BSTestRunner中, ...

  5. MSF+Nmap TCP空闲扫描

    MSF+Nmap TCP空闲扫描 前言 TCP空闲扫描是一种高级的扫描技术,可以冒充内网中另一台IP地址来对内网中的目标进行隐秘的扫描. 正文 在进行扫描之前,我们需要了解一个概念,即递增IP帧标识, ...

  6. Markdown 学习(语法)

    标题 井号加空格(# ) 几个#就是几级标题 字体 粗体 (两边两个*) 斜体 (两边一个*) 斜体加粗 (两边三个*) 中间斜线 (两个波浪号~) 引用 选择引用,一个箭头 > 加空格 分割线 ...

  7. nagios介绍和安装

    官方support文献: https://support.nagios.com/kb/ 1.Nagios的监控模式: 主动式检查:NCPA.NRPE nagios安装后默认使用主动检查方式,远程执行代 ...

  8. 跟我一起写 Makefile(二)

    三.make是如何工作的 在默认的方式下,也就是我们只输入make命令.那么, 1.make会在当前目录下找名字叫"Makefile"或"makefile"的文 ...

  9. LiteFlow 2.6.0版本发行注记,项目逻辑解耦的利器

    前言 自从LiteFlow 2.5.X版本发布依赖,陆续经历了10个小版本的迭代.社区群也稳固增长,每天都有很多小伙伴在问我问题. 但是我发现最多人问我的还是:什么时候能支持界面编排? 从LiteFL ...

  10. Http协议中的CharacterEncoding、Content-Encoding和Transfer-Encoding

    https://www.cnblogs.com/jinzhiming/p/5765672.html https://www.jianshu.com/p/e918a65b617f https://www ...