Java 学习:对象和类
对象和类
从认识的角度考虑是先有对象后有类。对象,是具体的事物。类,是抽象的,是对对象的抽象。
从代码运行角度考虑是先有类后又对象。类是对象的模板。
对象:对象是类的一个实例,有状态和行为。
类:类是一个模板,它描述一类对象的行为和状态。
下图中男孩(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;//局部变量
}
}
类的构造方法
- 构造方法的名字和类相同,可以有多个构造方法,并且没有返回值。
- 构造方法主要用于为类的对象定义初始化状态。
- 不能直接调用构造方法,必须通过关键字 new 来自动调用,从而创建类的实例
- Java的类都要求有构造方法,如果我们没有自己定义构造方法,Java编译器会默认提供一个无参数的构造方法。
new 关键字的作用
- 为对象分配内存空间。
- 引起对象构造方法的调用
- 为对象返回一个引用。
Java 学习:对象和类的更多相关文章
- Java学习——对象和类
1. 入门例子 package jihite; public class Dog{ int dogage; public Dog(String name){ System.out.println(&q ...
- Java学习笔记之---类和对象
Java学习笔记之---类和对象 (一)类 类是一个模板,它描述一类对象的行为和状态 例如:动物类是一个类,动物们都有属性:颜色,动物们都有行为:吃饭 public class Dog { Stri ...
- Java学习:Properties类
Java学习:Properties类 学习目标 认识properties文件,理解其含义,会正确创建properties文件. 会使用java.util.Properties类来操作propertie ...
- Java学习:File类
Java学习:File类 File类的概述 重点:记住这三个单词 绝对路径和相对路径 File类的构造方法 File类判断功能的方法 File类创建删除功能的方法 File类获取(文件夹)目录和文件夹 ...
- java学习一目了然——File类文件处理
java学习一目了然--File类文件处理 File类(java.io.File) 构造函数: File(String path) File(String parent,String child) F ...
- Java学习笔记——File类之文件管理和读写操作、下载图片
Java学习笔记——File类之文件管理和读写操作.下载图片 File类的总结: 1.文件和文件夹的创建 2.文件的读取 3.文件的写入 4.文件的复制(字符流.字节流.处理流) 5.以图片地址下载图 ...
- Java常见对象Object类中的个别方法
Java常见对象Object类 public int hashCode() : 返回该对象的哈希码值. 注意:哈希值是根据哈希算法计算出来的一个值,这个值和地址值有关,但是不是实际地址值.你可以理解成 ...
- 快乐编程大本营【java语言训练班】 6课:用java的对象和类编程
快乐编程大本营[java语言训练班] 6课:用java的对象和类编程 第1节. 什么是对象和类 第2节. 对象的属性和方法 第3节. 类的继承 第4节. 使用举例:创建类,定义方法,定义属性 第5节. ...
- Java的对象与类,继承
Java的对象与类,继承 题目1.Java类的建立与使用 设计一个用来描述汽车的类,使用类的非静态成员变量来表示汽车的车主姓名.当前的速率和当前方向盘的转向角度,使用类的非静态成员方法来表示改变汽车的 ...
- 你真的了解JAVA中对象和类、this、super和static关键字吗
作者:小牛呼噜噜 | https://xiaoniuhululu.com 计算机内功.JAVA底层.面试相关资料等更多精彩文章在公众号「小牛呼噜噜 」 目录 Java对象究竟是什么? 创建对象的过程 ...
随机推荐
- 第九篇 -- cpu的学习
CPU的核数关系: 总核数 = 物理CPU个数 X 每颗物理CPU的核数 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数 Linux中查看CPU数: # 查看物理CPU个数 ...
- Hadoop (8088)未授权访问
cd /vulhub/hadoop/unauthorized-yarn 加速下载环境 sudo vim /etc/docker/daemon.json 添加 {"registry-mirro ...
- 大数据学习(16)—— HBase环境搭建和基本操作
部署规划 HBase全称叫Hadoop Database,它的数据存储在HDFS上.我们的实验环境依然基于上个主题Hive的配置,参考大数据学习(11)-- Hive元数据服务模式搭建. 在此基础上, ...
- transform——转换
① 位移 transform:translate(x,y); 同时x轴和y轴的位移 translate(x); 在x轴上的位移 同 translateX(x) translate ...
- DC-6 靶机渗透测试
DC-6 渗透测试 冲冲冲,好好学习 . 收获总结写在文末. 操作机:kali 172.66.66.129 靶机:DC-4 172.66.66.136 网络模式:NAT 上来一波 netdiscove ...
- ArrayList 源码底层实现解析 基于1.8
ArrayList 介绍 ArrayList是一种线性数据结构,它的底层是用数组实现的,是动态数组.与Java中的数组相比,它的容量能动态增长.源代码里有解释.当创建一个数组的时候,就必须确定它的大小 ...
- 如何读懂Framework源码?如何从应用深入到Framework?
如何读懂Framework源码? 首先,我也是一个应用层开发者,我想大部分有"如何读懂Framework源码?"这个疑问的,应该大都是应用层开发. 那对于我们来讲,读源码最大的问题 ...
- 掌握JavaScript中的Promise,实现异步编程
事件循环 基本介绍 JavaScript是一门单线程的编程语言,所以没有真正意义上的并行特性. 为了协调事件处理.页面交互.脚本调用.UI渲染.网络请求等行为对主线程造成的影响,事件循环(event ...
- 简单的整合 shiro + SpringMVC 例子
简单的整合shiro和springmvc的例子 想要整合Shiro和springmvc,在网上找了很多例子,感觉都有一点复杂.所以就自己写了一个最简单整合项目,记录在这里以备后面查看. 这个例子包含如 ...
- 【笔记】初探KNN算法(3)
KNN算法(3) 测试算法的目的就是为了帮助我们选择一个更好的模型 训练数据集,测试数据集方面 一般来说,我们训练得到的模型直接在真实的环境中使用 这就导致了一些问题 如果模型很差,未经改进就应用在现 ...