类与对象(OOP)

快速入门
  1. 类是抽象的,概念的,代表一类事物。即它是数据类型
  2. 对象是具体的,实际的,代表一个具体事物。即它是实例
  3. 类是对象的模版,对象是类的一个个体,对应一个实例
  • 养猫问题:

    张老太养了两只猫猫:一只叫咪咪,今年3岁,白色;一只叫喵喵,今年5岁,玳瑁色。

    请编写一个程序,当用户输入小猫名字时,就显示该猫的名字、年龄、花色。如果用户输入的名字错误,则显示“张老太没有这只猫”

import java.util.Scanner;public class Object01{public static void main(String[] args) {/*张老太养了两只猫猫:一只叫咪咪,今年3岁,白色;一只叫喵喵,今年5岁,玳瑁色。请编写一个程序,当用户输入小猫名字时,就显示该猫的名字、年龄、花色。如果用户输入的名字错误,则显示“张老太没有这只猫”*/Scanner myScanner = new Scanner(System.in);//实例化对象Cat cat1 = new Cat();cat1.name = "咪咪";cat1.age = 3;cat1.color = "白色";Cat cat2 = new Cat();cat2.name = "喵喵";cat2.age = 5;cat2.color = "玳瑁色";String reply = myScanner.next();if ("咪咪".equals(reply)) {System.out.println("Cat1:" + cat1.name + " " + cat1.age + " " + cat1.color);}else if ("喵喵".equals(reply)){System.out.println("Cat2:" + cat2.name + " " + cat2.age + " " + cat2.color);}else{System.out.println("张老太没有这只猫");}}
}class Cat{//属性String name;int age;String color;
}

对象内存布局


属性/成员变量
  1. 从概念或叫法来看,成员变量 = 属性 = field,即成员变量是用来表示属性的

  2. 属性是类的一个组成部分,一般是基本数据类型,也可是引用类型(对象、数组)

  3. 属性的定义语法等同变量

    访问修饰符 属性类型 属性名

    访问修饰符的作用是控制使用范围,有四种访问修饰符:public protected private 默认, 之后详讲

  4. 属性如果不赋值,有默认值,规则和数组一致

    关于数的都是0/0.0,boolean是false,String4. 是null,char是\u0000


创建对象
  1. 先声明再创建

    Cat cat;//这里声明完对象后,栈中的cat指向的是null
    cat = new Cat();//new后才有地址,cat随即指向在堆中的地址
    
  2. 直接创建

    Cat cat = new Cat();
    

类和对象的内存分配机制
  1. 栈:一般存放基本数据类型(局部变量)

  2. 堆:存放对象(Cat cat,数组等)

  3. 方法区:常量池(常量,字符串等),类加载信息

  4. 示例

    Person p = new Person();
    p.name = "jack";
    p.age = 10;
    
    1. 先加载Person类信息(属性和方法信息,只会加载一次)
    2. 在堆中分配空间,进行默认初始化
    3. 把地址赋给p,p就指向对象
    4. 进行指定初始化,如p.name = “ ”

对象机制练习.
  1. 以下代码会输出什么?

    Person a = new Person();
    a.age = 10;
    a.name = "小明";
    Person b;
    b = a;
    System.out.println(b.name);//输出 小明
    b.age = 200;
    b = null;//把b置为null,意思是把b和堆中的连线切断
    System.out.println(a.age);//输出 200
    System.out.println(b.age);//输出异常
    

JAVA基础-U7 面向对象编程(基础部分)-类与对象相关推荐

  1. python类和对象介绍_Python开发基础-Day17面向对象编程介绍、类和对象

    面向对象变成介绍 面向过程编程 核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西.主要应用在一旦完成很少修改的地方,如linux ...

  2. JAVA基础-U7 面向对象编程(基础部分)-作用域

    作用域 在java编程中,主要的变量就是属性(成员变量)和局部变量. 全局变量:也就是属性,作用域为整个类体.可以不赋值直接使用,因为有默认值. 局部变量:一般指的是在成员方法中定义的变量(除了属性之 ...

  3. JAVA基础-U7 面向对象编程(基础部分)-构造器

    构造方法/构造器 基本语法 构造方法又叫构造器(constructor),是类的一种特殊方法,它的主要作用是对新对象的初始化 [修饰符] 方法(形参列表){方法体; } 构造器的修饰符可以默认,也可以 ...

  4. JAVA基础-U7 面向对象编程(基础部分)-可变参数

    可变参数 基本概念 java允许将同一个类中多个同名同功能但参数个数不同的方法,封装成一个方法 本质上是将其当成数组对待 基本语法 访问修饰符 返回类型 方法名(数据类型... 形参名){} 快速入门 ...

  5. JAVA基础-U7 面向对象编程(基础部分)-成员方法

    成员方法 快速入门 添加speak成员方法,输出"我是一个好人" 添加cal01成员方法,可以计算从1+-+1000的结果 添加cal02成员方法,该方法可以接受一个数n,计算从1 ...

  6. JAVA基础-U7 面向对象编程(基础部分)-方法重载

    方法重载(Overload) 基本介绍 java中允许同一个类中,多个同名方法的存在,但要求形参列表不一致 eg. System.out.println(); //out是PrintStream类型 ...

  7. JAVA基础-U7 面向对象编程(基础部分)-递归

    方法递归调用 递归能解决什么问题 各种数学问题:8皇后问题.汉诺塔.阶乘问题.迷宫问题,球和篮子的问题- 各种算法问题:快排.归并排序.二分查找.分治算法- 用栈解决的问题(递归代码比较简洁) 递归调 ...

  8. [Java入门笔记] 面向对象编程基础(二):方法详解

    2019独角兽企业重金招聘Python工程师标准>>> 什么是方法? 简介 在上一篇的blog中,我们知道了方法是类中的一个组成部分,是类或对象的行为特征的抽象. 无论是从语法和功能 ...

  9. Java面向对象编程篇1——类与对象

    Java面向对象编程篇1--类与对象 1.面向过程 1.1.概念 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了 1.2.优缺点 优点:性 ...

最新文章

  1. docker 配置阿里云镜像加速
  2. 【总结】超1000页有三AI文档资源领取方法汇总!
  3. Python新手常见错误汇总|附代码检查清单
  4. android ota更新app,企业 OTA 更新  |  Android 开源项目  |  Android Open Source Project
  5. android DatePicker
  6. PoseCNN代码复现CMake编译找不到math_functions.hpp
  7. python中continue用法案例_记录今天学习python中for与while循环针对break和continue的用法...
  8. (一)Maven 基本概念——根目录、项目创建、坐标
  9. Atitit.收银系统pos 以及打印功能的行业标准
  10. 再见也是永别——告别即将消逝的雅虎邮箱
  11. PDMS.NET窗体
  12. 2022在线横幅广告_店标_LOGO制作系统最新源码
  13. 读书笔记12 《新周刊485期 三商:智商、情商、时间商》
  14. SSL证书7大常见错误及解决办法!
  15. linux提取fasta文件的id,从大的fasta文件中提取特定的fasta序列
  16. 计算机专业研究生核心能力培养(1)——论文阅读与积累
  17. openflow初学者入门笔记一(openflow 1.0 and openflow 1.3)
  18. 汉诺塔(C语言实现)
  19. 9 个非常实用的网络调试命令
  20. c# + halcon编程(读图、显示图、处理图、鼠标和图像交互)

热门文章

  1. C语言获取字符串长度的几种方法
  2. 我希望 明天的自己 像一道彩虹 还是刚淋过雨
  3. 网络基础知识-192.168.0.1/24是什么意思?
  4. html可拖拽图片循环滚动,html5可拖拽图片循环滚动切换 - 站长素材
  5. 【leetcode43-----有效的回旋镖】
  6. ac 无线二维码认证服务器,无线V7 AC配合Cisco ISE认证服务器实现portal认证配置
  7. 变压器阻抗匹配-考虑线圈感抗吗
  8. 短视频如何结尾更吸引人?三种结尾可参考,好的结尾更能引流
  9. 在uni-app里面怎么引入阿里矢量图标库?
  10. SCD Self-Contrastive Decorrelation for Sentence Embeddings