Java面向对象的概述

面向对象的概述

一.面向对象思想的介绍

  1. 面向对象是编程使用的编程思想
  2. 面向过程:强调的是解决问题的步骤和方式,强调解决问题的方法和思路,自上而下,不断分解;
    面向对象:强调解决问题的主体,更强调对象,解决问题的思想是:自下而上,不断封装
    以洗衣服为例:
    面向过程:拿衣服、拿盆、洗衣液、放水、静置一段时间、开始洗、涮衣服、晾起来
    面向对象:找个媳妇儿、发出指令,洗衣服
  3. 面向对象的优点
    1)把复杂的问题简单化
    2)我们由解决问题的执行者变成了指挥者
  4. 面向对象的特征
    封装、继承、多态
  5. 说明:面向对象是更高层次的编程设计思想,面向过程是面向对象的基础,不可分割

二.类和对象

  1. 类:具有相同特征和行为的一类事物的抽象结果
  2. 对象:一个事物的具体体现,可以说“万物皆对象”
  3. 举个栗子: 笔记本电脑 联想笔记本电脑
    此时,笔记本电脑就是抽象出来的一个类(不知道是哪种笔记本电脑),只知道是笔记本电脑
    联想笔记本电脑就是一个对象,是对笔记本电脑这一类事物的一个具体描述
  4. 类的属性:用于描述类的特征,一般是名词和形容词; java语言中,属性就是一个类的成员变量.
    比如: Person、Student、Teacher
    在上面这三个单词中,Person就是一个抽象的类,Student和Teacher是它的两个具体化的对象,学生和老师都属于人类
    学生:
    属性:姓名 年龄 性别 学号 住址
    行为:学习 吃 喝 睡 找女朋友
    老师:
    属性:姓名 年龄 性别 工号 住址
    行为:吃 喝 睡 教书育人
  5. 行为:对类的功能的描述,一般是动词或者动宾结合的词; java语言中,一种行为就是一个成员方法
  6. 类的定义格式:
    class 类名 {
    成员变量 1;
    成员变量 2;
    成员变量 3;

    成员方法 1;
    成员方法 2;
    成员方法 3;
    }
    类有自己的定义格式,类在java中是一种复杂的数据类型,类的作用是用来创建对象
  7. 说明:自定义的类编译之后,会生成一个.class文件;在一个源文件中可以定义多个类,经过编译之后,会生成多个.class文件
    一个例子:定义一个人类的步骤:
    1)给类起一个名字,要求见名知义
    2)设计类的属性:成员变量
    3)设计类的行为:成员方法
    人类类名:Person
    成员变量:名字 年龄 性别 身高 体重
    成员方法:吃 睡 玩 学习 打豆豆

三.对象的创建

  1. 对象的创建:又称为 类的实例化
  2. 格式: 类名 对象名 = new 类名();
  3. 格式说明:
    类名:要创建对象的所属类型,比如Student属于Person
    对象名:是一个合法的标识符即可,用来表示创建的对象,存储的内容是对象在堆区申请空间的地址
    =:把对象的地址赋值给对象名
    类名:和前面的类名保持一致,包括大小写
    ():表示调用一个方法,调用的是构造方法
  4. 对象的使用: . 的作用就是调用和访问的意思
    对象访问成员变量:
    赋值:对象名.成员变量名 = 变量值;
    取值:对象名.成员变量名;
    对象访问成员方法:
    对象名.成员方法();
    说明:()中可以传实参也可不传
  5. 在Windons命令窗口直接打印对象会得到类似:Person@15db9742 的结果
    打印结果说明:
    Person:对象所属类型
    @:普通分隔符
    15db9742:对象在堆区的地址,由hashCode算法计算得出
  6. 对象的创建步骤
    1)将要创建的对象的所属类型的字节码文件(.class文件)加载到方法区,形成一个字节码文件对象
    2)在栈内存中创建一个创建的类的类型的引用,用来存储堆区对象的地址
    3)在堆内存中开辟空间,给每个成员变量分配内存
    4)给成员变量赋初始值(引用型数据类型初始值为null,整型为0,小数型为0.0,boolean类型为false,字符类型不定)
    5)把对象的地址赋值给占内存中的引用
    上代码:
 class Demo01_对象的内存理解 {
		public static void main(String[] args) {
		//创建一个Student对象 s
		Student s = new Student();
		//给成员变量(属性)赋值
		s.name = "大小姐";
		s.age = 20;
		s.gender = "女";
		s.num = "01011";

		// 取值,把赋的值打印出来
		System.out.println(s.name);
		System.out.println(s.age);
		System.out.println(s.gender);
		System.out.println(s.num);
		
		//调用成员方法(行为)
		s.study();
		s.eat();
		s.sleep();
		s.play();
	}
}
//创建一个学生类
class Student {
	//学生的属性(成员变量):姓名 年龄 性别  学号
	String name;
	int age;
	String gender;
	String num;

	//学生的行为(成员方法):学习 吃饭 睡觉 骑皮皮虾
	public void study(){
		System.out.println("好好学习 天天向上");
	}
	public void eat(){
		System.out.println("吃帝王蟹");
	}
	public void sleep(){
		System.out.println("十年修得同船渡 百年修得共枕眠");
	}
	public void play(){
		System.out.println("骑皮皮虾");
	}
}

图解:

图解说明:

  1. 当第一次使用某个类型时,会将该类型对应的字节码文件(.class)加载到方法区,以后使用该类型的时候,就不再重新加载
  2. 创建对象的时候,默认隐含一个字节码文件的地址,将来可以通过对象访问字节码文件的内容,比如,可以访问成员方法
  3. 哪个对象调用方法,方法的栈帧中就隐含哪个对象的地址
  4. 每次使用new关键字,就会在堆区创建新的对象,同时在堆区开辟新的内存空间
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值