类与对象

为什么会有类与对象?

  • java 设计者 引入 类与对象(OOP) ,根本原因就是现有的技术,不能完美的解决新的新的需求.

快速入门

package Object_Practice;

//		使用面向对象的方式来解决问题
public class Object01 {
public static void main(String[] args) {
// 使用oop来解决这个问题
// 1.实例化一只猫[创建一个对象]
// 2.cat1(cat2) 就是一个对象
Cat cat1 = new Cat();
cat1.name = "小白";
cat1.age = 3;
cat1.color = "白色"; Cat cat2 = new Cat();
cat2.name = "小花";
cat2.age = 100;
cat2.color = "花色"; // 如何访问对象的属性呐
System.out.println("====第一只猫信息====\n" +"姓名:" + cat1.name + "\n"
+"年龄:" + cat1.age +"\n"
+"颜色:" + cat1.color); System.out.println("====第二只猫信息====\n" +"姓名:" + cat2.name + "\n"
+"年龄:" + cat2.age +"\n"
+"颜色:" + cat2.color);
} } class Cat {
// 属性
String name;// 名字
int age;// 年龄
String color;// 颜色 // 行为
}

总结:

  1. 类是抽象的,概念的,代表一类事物,不如人,猫,它是个数据类型
  2. 对象是具体的,实际的,代表一个具体的事物,即实例
  3. 类是对象的模板,对象是类的一个个个体,对应一个实例

一、类

概念:类主要是由它的属性行为组成的

二、对象

概念:对象是类的具体实例

2.1对象的内存布局形式

总结:

  1. 会把类中字符串放到常量池中
  2. 基本数据类型放在堆中
  3. 创建对象时,会加载猫类的信息,包括属性行为

三、类与对象

从概念或叫法上看:

  1. 成员变量 = 属性 = field(字段) (即 成员变量是用来表示属性的,授课中,统一叫 属性)

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

class Car{
//属性/成员变量/field(字段)
String name;
double price;
String color;
String [] master;
//可以是基本数据类型,也可以是引用数据类型
}

3.1如何创建

  1. 先声明再创建

    Cat cat;
    cat = new Cat();
  2. 直接创建

    Cat cat = new Cat();

3.2如何访问属性

基本语法:对象名.属性名

3.2类与对象的分配机制

public static void main(String[] args) {
Person p1 = new Person();
//p1指向 new Person 开辟出来的空间,包括它分配出来的数据
//p1 称为对象引用/对象名,new Person 才是真正的对象
p1.name = "杨文龙";
p1.age = 21;
p1.sal = 86;
p1.isPass = true;
//对象的属性默认值,遵守数组的规则:
// int 0,short 0, byte 0, long 0, float 0.0,
//double 0.0,char \u0000, boolean false,String NULL
System.out.println("这个人的信息");
System.out.println("姓名:" + p1.name +"\n"
+ "年龄:" + p1.age + "\n"
+ "分数:" + p1.sal + "\n"
+ "是否通过:" + p1.isPass + "\n" );
Person p2 = p1;
System.out.println("年龄:" + p1.age);//输出多少
}

3.2.1Java内存的结构分析

  1. 栈:一般存放基本数据类型(局部变量)
  2. 堆:存放对象(Cat cat,数组等)
  3. 方法区: 常量池(常量,比如字符串),类加载信息

例如

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

注意事项和细节

  1. 属性的定义语法同变量,示例:访问修饰符 属性类型 属性

    • 访问修饰符:用来控制属性的范围范围

      • public
      • protected
      • 默认
      • private
  2. 属性的定义类型可以为任意类型,包含基本类型或引用类型

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

    • 具体说: int 0,short 0, byte 0, long 0, float 0.0,double 0.0,char \u0000, boolean false,String
package Object_Practice;

public class PropertiesDetail {
public static void main(String[] args) {
Person p1 = new Person();
//p1指向 new Person 开辟出来的空间,包括它分配出来的数据
//p1 称为对象引用/对象名,new Person 才是真正的对象 //对象的属性默认值,遵守数组的规则:
// int 0,short 0, byte 0, long 0, float 0.0,
//double 0.0,char \u0000, boolean false,String NULL
System.out.println("这个人的信息");
System.out.println("姓名:" + p1.name +"\n"
+ "年龄:" + p1.age + "\n"
+ "分数:" + p1.sal + "\n"
+ "是否通过:" + p1.isPass + "\n" );
}
} class Person{
int age;
String name;
double sal;
boolean isPass;
}

JAVA——类与对象的更多相关文章

  1. Java类和对象初始化

    类的生命周期: Java类的初始化: 本阶段负责为类变量赋正确的初始值.(类变量即静态变量) Java编译器把所有的类变量初始化语句和静态初始化器通通收集到<clinit>方法中,该方法只 ...

  2. java类和对象之间的差

    java类和对象之间的差别是一个普遍的问题,刚开始学习java当它来到与类和对象接触.今天就来总结一下它们之间的差异. 先说说class和object差异.事实上,词:object是全部class的父 ...

  3. 危险代码:如何使用Unsafe操作内存中的Java类和对象

    危险代码:如何使用Unsafe操作内存中的Java类和对象—Part1 危险代码:如何使用Unsafe操作内存中的Java类和对象—Part2 危险代码:如何使用Unsafe操作内存中的Java类和对 ...

  4. [Java初探08]__简单学习Java类和对象

    前言 在前面的学习中,我们对面向对象的编程思想有了一个基本的了解,并且简单的了解了类和对象的定义.那么类和对象在Java语言中是如何表现的,这次,就从实际出发,学习一下一下类和对象在Java语言中的使 ...

  5. java类和对象

    类是对象的抽象 对象是类的一个实例类 对象 = new 类();拿对象可以操作这个类里的方法 java类与对象的区别是个老生常谈的问题,刚开始学java的时候就开始接触类和对象,今天来总结一下他们之间 ...

  6. 解析Java类和对象的初始化过程

    类的初始化和对象初始化是 JVM 管理的类型生命周期中非常重要的两个环节,Google 了一遍网络,有关类装载机制的文章倒是不少,然而类初始化和对象初始化的文章并不多,特别是从字节码和 JVM 层次来 ...

  7. JAVA类和对象课后作业

    1.使用类的静态字段和构造函数,我们可以跟踪某个类所创建对象的个数.请写一个类,在任何时候都可以向它查询"你已经创建了多少个对象?" 代码: //显示类 //YiMingLai 2 ...

  8. Java类与对象的基础学习

    1. 请输入并运行以下代码,得到什么结果? public class Test{ public static void main(String args[]){ Foo obj1=new Foo(); ...

  9. JAVA类与对象作业——动手动脑以及课后实验性问题

    一: 1.源代码 //MAO2015.10.6 //foo class Foo { int value; public Foo(int initValue) { value = initValue; ...

  10. JAVA类与对象(九)------多态

    多态是同一个行为具有多个不同表现形式或形态的能力.多态性是对象多种表现形式的体现. 多态存在的三个必要条件: 继承 重写 父类引用指向子类对象 例:Parent p = new Child(); 当使 ...

随机推荐

  1. [USACO18DEC]Sort It Out P

    初看本题毫无思路,只能从特殊的 \(K = 1\) 出发. 但是直接考虑构造一组字典序最小的方案还是不好构造,可以考虑先手玩一下样例.通过自己手玩的样例可以发现,貌似没有被选出来的数在原排列中都是递增 ...

  2. 什么是Native方法 (转)

    一个Native Method就是一个java调用非java代码的接口(NDK也跟这有关吗?(疑问)一个Native Method由非java语言实现 在定义一个native method时,并不提供 ...

  3. 关于在 Linux 下多个不相干的进程互斥访问同一片共享内存的问题

    转载请注明来源:https://www.cnblogs.com/hookjc/ 这里的"不相干",定义为: 这几个进程没有父子关系,也没有 Server/Client 关系 这一片 ...

  4. Mac 使用自带php和Apache 安装配置Xdebug 开启本地调试模式

    Mac 安装配置php xdebug 本地调试 0.原理图 https://paper.seebug.org/308/ 测试demo构建方法 新建空白项目,目录选择Apache默认项目目录 1.下载x ...

  5. java篇之JDBC原理和使用方法

    JDBC学过但又属于很容易忘记的那种,每次要用到,都要看下连接模式.每次找又很费时间,总之好麻烦呀呀呀,所以写篇博客,总结下原理和常用接口,要是又忘了可以直接来博客上看,嘿嘿. 一.什么是JDBC 1 ...

  6. 简单实现支付密码输入框 By HL

    密码输入框在微信,支付宝中比较常见 主要功能点 1.6位(或者N位)密码输入框封装

  7. 红色小圆点+数字的badge自定义小方法 by Nicky.Tsui

    效果如图. 实现方法比较简单,在view上增加一个label label设置: 1 badgeLabel = [[UILabel alloc]initWithFrame:CGRectMake(CGRe ...

  8. JAVA! static的作用

    是静态修饰符,什么叫静态修饰符呢?大家都知道,在程序中任何变量或者代码都是在编译时由系统自动分配内存来存储的,而所谓静态就是指在编译后所分配的内存会一直存在,直到程序退出内存才会释放这个空间,也就是只 ...

  9. 服务器硬件及RAID配置实践

    服务器硬件及RAID配置实践 1.RAID磁盘阵列介绍 2.创建RAID磁盘阵列 1.RAID:中文简称为独立冗余磁盘阵列 把多块独立的物理硬盘按不同的方式组合起来形成一个硬盘组(逻辑硬盘),从而提供 ...

  10. Leetcode随缘刷题之寻找两个正序数组的中位数

    我一上来没读清题,想着这题这么简单,直接就上手写了: package leetcode.day_12_05; import java.util.ArrayList; import java.util. ...