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

类与对象(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);//输出异常
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值