类与对象(一)----什么是类和对象
类
类在java语言中是一个数据类型,以class关键词+类名表示。是一个模糊的概念、
类在生活中可以这样理解:
猫是一个类:猫类(class Cat)
猫有品种:田园猫 布偶猫 金渐层 …
猫有年龄,花色,等这些特征 而且这些特征是每只猫(世界上所有的猫)都有的特征 这个在java中叫做类的属性
猫是一个动物,不但有特征还有行为:跳 跑 走 睡觉 吃 等等…这些行为也是每只猫都会的 这个在java中叫做类的方法
同理 人也是一个类 人类(class Person)人的属性有 年龄age 名字name 国籍nationality 人的方法有 学习 study 吃eat 跑run 等
对象
从上面了解到了什么是类。那么同理现实生活中也有对象,类就相当于你知道了这个世界上有一种动物叫猫,但是你没见过。
对象在java中是类的实例, 例如现在有一只猫,名字叫大黄,那么这个大黄就是对象。大黄是猫类的具体实例,他有猫类的属性,年龄 12 品种田园 花色黄色 同理也有猫类的方法 会跑 会吃 。
大黄也可以有自己的行为(方法),比如大黄会唱歌,其他猫类不一定会,这是大黄独有的行为(方法)
小李也是一个对象。是人类的实例化,名字叫小李 年龄25 国籍中国 会跑步。也有自己的方法 会编程
总结:类 是一个模板,对象就是通过这个模板实例出来的具体的事物。这个过程叫做实例化
类与对象入门
使用类和对象解决以下问题:
张婆婆养了两只猫:
一只叫小白 3岁 白色
一只叫小花 7岁 花色
编写一个程序,当用户输入小猫名字的时候就显示该猫的属性,如果没有就显示张婆婆没有这只猫
思路
1-创建一个 Cat 类,创建属性 名字 年龄 颜色
2-实例化两个对象,并把对象的属性赋值
3-在主程序使用判断语句打印输出对应的对象属性
public class OOP1{public static void main(String[] args) {//实例化猫类并赋值Cat xiaobai =new Cat();xiaobai.name = "小白";xiaobai.age = 3;xiaobai.color = "白色";//实例化第二只猫Cat xiaohua =new Cat();xiaohua.name = "小花";xiaohua.age = 7;xiaohua.color = "花色";//使用判断语句输出对应对象的属性Scanner mysc = new Scanner(System.in);System.out.println("请输入小猫的名字:");String sr = mysc.next();if (sr.equals(xiaobai.name)) {//对比System.out.println(xiaobai.name+xiaobai.age+xiaobai.color);}else if(sr.equals(xiaohua.name)){//对比System.out.println(xiaohua.name+xiaohua.age+xiaohua.color);}else{System.out.println("张婆婆没有这只猫");}}
}
class Cat{//创建猫类//创建类的属性String name;int age;String color;
}
对象内存分析
Cat xiaobai =new Cat();
xiaobai.name = “小白”;
xiaobai.age = 3;
xiaobai.color = “白色”;
这段代码是实例化了Cat类 并对其进行了赋值,那么在内存中也是有对应的操作的
与数组同理对象采用的也是引用传递,对象名保存在栈中根据地址指向堆,对应的堆中如果是字符串类型那么保存的就是一个指向方法区常量池的地址,如果是基本数据类型那么保存就就是数据本身
例如:xiaobai.name = “小白”; 就是一个String类型,在堆中保存的就是指向方法区常量池的地址,"小白"这个字符串就在常量池中
xiaobai.age = 3;就是一个基本int类型,在堆中保存的就是“3”这个数据本身
那么Cat类的 “类”信息也会加载在方法区中,属性,方法等
具体内存如图所示:
重点 Cat xiaobai =new Cat(); :在这个语句中代表new一个Cat类型的空间给 xiaobai 。对象不是xiaobai ,对象是在堆中的空间属性信息和这个对象的信息(常量池中也有)。就像一个人叫小明 “小明”只是他的名字 有血有肉的人才是对象
属性
在类中和实例化的对象中有自己的属性,(像是现实世界中的 人“类”的特征: 性别 肤色 国籍)和方法(人类的行为:学习 跑 吃)
那么在java中 属性也被叫做成员变量或者field 即- 属性=成员变量=field
属性是类的一个组成部分,一般是基本数据类型,也可以是引用类型(对象 数组)例如上面定义 Cat类的 name age color变量就是属性
属性的注意事项
1-属性的定义语法同变量,:访问修饰符 属性类型 属性名; (默认访问修饰符可以不用写)
2-属性的定义可以为任意类型,包含基本类型和引用类型
3-属性如果不赋值,会有默认值,规则和数组一致 (数字类型都是0 字符串是null 布尔类型是false)
类与对象(一)----什么是类和对象相关推荐
- C++ 笔记(16)— 类和对象(类定义、类实例对象定义、访问类成员、类成员函数、类 public/private/protected 成员、类对象引用和指针)
1. 类的定义 类定义是以关键字 class 开头,后跟类的名称.并在它后面依次包含类名,一组放在 {} 内的成员属性和成员函数,以及结尾的分号. 类声明将类本身及其属性告诉编译器.类声明本身并不能改 ...
- java查看对象锁级别_对象级别锁 vs 类级别锁(Java)
前言 对于多线程(并发)和Spring Boot这两块在同步进行学习中,在看到使用synchronized关键字使操作同步时,看到和C#中不一样的东西,所以这里呢,就深入学习了下,若有错误之处,还望指 ...
- java封装对象实体类_Java 接口自动化系列--实体类之entity封装
实体包entity下面有4个类,主要存放java对象,每个类必须有私有属性,空参构造,get set方法 具体excel中数据信息见---工具类excel文章 1.API类 解析excel中接口信息的 ...
- java 类定义_JAVA类与对象(二)----类定义基础
类是组成java程序的基本要素,是java中的一种重要的复合数据类型.它封装了一类对象的状态和方法,是这一类对象的原型.一个类的实现包括两个部分:类声明和类体,基本格式: class { 属性 方法 ...
- java根据属性获取对象_java反射工具类--通过指定属性名,获取/设置对象属性值
java对象通过点运算符操作对象属性的方式没法使用for,while等循环,此工具主要解决这一问题. 例如:有一对象包含属性有一定规律 obj1: { name1: "张三", a ...
- 5.对象和面向对象3——类的定义
为什么80%的码农都做不了架构师?>>> Python 是完全面向对象的:你可以定义自已的类,从自已的或内置的类继承,然后从你定义的类创建实例. 在 Python 中定义类很简 ...
- 补8.python之面相对象part.7(类相关函数的补充)
一,isinstance(obj.cls) & issubclass(sub,super) isinstance(obj.cls):用于检查一个对象是否属于某个类.(某个对象是否由某个类产生) ...
- Object类 任何类都是object类的子类 用object对象接收数组 object类的向上向下转型...
任何类都是object类的子类 用object对象接收数组 object类的向上向下转型 转载于:https://www.cnblogs.com/qingyundian/p/7744351.html
- python中类方法与实例方法的区别-Python中的对象,方法,类,实例,函数用法分析...
本文实例分析了Python中的对象,方法,类,实例,函数用法.分享给大家供大家参考.具体分析如下: Python是一个完全面向对象的语言.不仅实例是对象,类,函数,方法也都是对象. class Foo ...
- 对象级别锁 vs 类级别锁 – Java
同步针对的是多线程.同步的方法或代码块同时只能由一个线程执行. Java支持多线程来执行.这可能会导致两个或多个线程访问同一个字段或对象.同步是一个使所有并发执行的线程同步的过程.同步避免了由于共享内 ...
最新文章
- numpy的array合并-【老鱼学numpy】
- JVM 的内存结构和内存分配
- .NET6又出新版本,新增这几个大杀器!
- 力扣1281.整数的各位积和之差
- 停航63天!湖北复航了,机票预订火爆程度堪比春运
- 大数据_Flink_数据处理_yarn和k8s平台的flink部署---Flink工作笔记0015
- 实训|第七天横扫Linux磁盘分区、软件安装障碍附制作软件仓库
- 密码管理系统竞品分析报告
- EasyBoot如何使用?EasyBoot制作多系统启动盘教程
- 解决Win10能登陆QQ却无法打开网页问题
- app安全评估报告,如何搞定呢?!
- grep、sed、awk高效文件处理3剑客
- 数据库之快照读与当前读
- linux安装maven并配置环境变量
- 庞博 上海交大计算机系,上海交大电子信息与电气工程学院卢策吾团队在人工智能《自然》子刊提出时空概念提取算法...
- 实战演练 Navicat 中英文模式切换
- 一款简洁美观的共享服务器 chfs 安装与配置(可用于局域网文件共享、私有网盘…)
- 办公大楼综合布线系统设计方案
- 计算活跃度、次留、三留、七留、次留率、三留率、七留率
- MYSQL常见运算符和函数(四)
热门文章
- Oracle的布莱恩·格茨(Brian Goetz)展望Lambdas的未来
- Debezium的MySQL连接器的工作原理
- android三星note20.6,三星Galaxy Note 20 Ultra依旧是“安卓机皇”,用过的都说好
- SQL合并 合并id相同的数据
- Java统计代码的执行时间的6种方法
- 深入浅出WPF——什么是XAML
- csv文件导入Mysql
- [ROC-RK3568-PC] 手把手教你把出厂的Android系统烧写为Ubuntu系统
- 自动控制原理知识点梳理——6.线性系统的校正方法
- WSL 解决code .报‘code‘ not fount无法打开Vscode问题