从零开始学Java--day07--面向对象(一)


前言

今天学习面向对象(很重要)。
今日内容:
1.面向对象
2.类与对象
3.三大特征–封装
4.构造器


提示:以下是本篇文章正文内容

一、面向对象概述

1.1 面向对象(OOP,Object Oriented Programming)

Java是"面向对象程序设计语言"

1.2面向对象和面向过程的区别

面向过程:强调的是"过程",往往关注事情"怎么做",比喻成"执行者",基本单位:函数(类似于Java中的方法)
面向对象:强调的是"对象",往往关注事情"找谁做",比喻成"指挥者",基本单位:类
面向过程和面向对象没有好坏之分,都是人们在生活中解决问题的手段之一:
在解决一些较小的问题时,往往选择"面向过程思想"
在解决一些较大的问题是,往往选择"面向对象思想"

1.3 面向对象思想三大阶段

面向对象基本思想(JavaSE)
面向接口思想
面向切面思想(真正的面向对象思想,手撕Spring框架源码)

1.4 面向对象三大特征

封装,继承,多态

二、类与对象

1.1 什么是类

类: 是一组相关属性和行为的集合。可以看成是一类事物的模板,使用事物的属性特征和行为特征来描述该类事物。
属性: 就是该事物的状态信息。
行为: 就是该事物能够做什么。
代码如下(示例):

1.2 什么是对象

对象:是一类事物的具体体现。对象是类的一个实例,必然具备该类事物的属性和行为。

1.3 类与对象的关系以及先后

类是对象的模版,抽象
对象是类的实体,实例

类与对象的先后关系:
先类后对象

1.4 类的设计

类的设计:
设计过程:
1.根据类的属性信息和行为动作设计出基础的类
2.在类中加入"封装"思想
3.在类中加入"构造器"概念
4.在类中加入特殊(静态)的属性信息和行为动作
5.将类一拆为多,加入"继承"思想
6.解决继承思想的安全隐患,加入"抽象"概念
7.将多个类继续一拆为多,加入"接口"概念
8.在类或接口中加入"常量"概念
9.在类或接口中加入"嵌套"概念
10.在类中加入构造器代码块的概念
11.在类中加入静态代码块的概念
12.熟悉Java中特殊的类"枚举类"

分类:
测试类:
基于测试效果演示的类(含有main()或者@Test)
标准类:
将类完整的设计出来

解释:
属性信息 ==> 代码中的"成员量"
行为动作 ==> 代码中的"成员方法"

成员量:
成员变量: 在类中方法外的变量
实例变量: 在类中方法外,且没有static关键字修饰的变量,实例变量归属于"对象"
静态变量: 在类中方法外,且含有static关键字修饰的变量,静态变量归属于"类"
成员常量:

成员方法:
实例方法: 在类中没有static关键字修饰的方法,实例方法归属于"对象"
静态方法: 在类中含有static关键字修饰的方法,静态方法归属于"类"(暂不涉及)
格式:

public class 类名 {
   实例变量
   实例方法
}

1.5 对象的使用:

格式:

类名 对象名 = new 类名();

使用:

对象名.实例变量名;
对象名.实例方法名(实参);

1.6 实例变量和局部变量的区别

局部变量和实例变量的区别:
局部变量:声明在代码块中或者代码块声明上的变量
实例变量:声明在类中方法外,且没有static关键字修饰的变量

区别:

代码中声明的位置不同:
	局部变量:代码块中或者代码块声明上
	实例变量:类中方法外
内存中存储的位置不同:
	局部变量:栈内存
	实例变量:堆内存
是否含有默认值不同:
	局部变量:没有
	实例变量:含有
代码中变量的作用域不同:
	局部变量:所属方法中
	实例变量:所属类中(静态方法,静态常量,静态代码块,静态成员内部类中无效)
内存中变量的生命周期不同:
	局部变量:随着方法的调用而加载,随着方法的出栈而消失
	实例变量:随着对象的创建而加载,随着对象的回收而消失
加载方式和次数不同:
	局部变量:每调用一次方法,局部变量就会加载一次,最多可以加载无数次
	实例变量:每创建一次对象,实例变量就会加载一次,最多可以加载无数次

在这里插入图片描述

1.7 this关键字的第一种使用方式

this关键字的第一种用法:
位置:

  实例方法中或构造器中

格式:

 this.实例变量名;
 this.实例方法名(实参);

作用:

 用来区别同一个类中同名的实例变量和局部变量

含义:

 哪个对象调用了this所在的实例方法或构造器,this关键字就代表哪个对象
public class ClassDemo {
 	int num = 10; 
	public void method () { 
		int num = 20; 
		System.out.println("num = " + num);//就近原则 20 //需求:在打印20的同时,打印10 		   
		System.out.println("num = " + this.num); 
	}
}

结果是20 10

三、封装

1.1 封装思想

  • 含义: 给程序中不同的内容添加不同的访问权限级别,从而达到保护的效果
  • 作用: 提供程序中内容的安全性
  • 核心: 封装思想的核心中是四种权限访问级别

1.2 四种权限访问级别:

权限访问级别从大到小的关系如下:
   public > protected > 缺省(sheng三声) > private
  • 解释:
    public: 公共的
    protected: 受保护的
    缺省: 什么都不写
    private: 私有的

private关键字:

  • 含义:
    private关键字是封装思想的体现形式之一
  • 修饰:
    用来修饰成员变量,成员常量,构造器,成员方法,成员内部类

私有实例变量:

  • 含义:
    被private修饰的实例变量

  • 格式:
    private 数据类型 变量名;

  • 作用:
    被private修饰的内容只能在本类中访问,从外界无法进行访问

  • 应用:
    1.将类中所有的实例变量的进行私有化
    2.针对每个被私有化的实例变量都提供一对的公共访问方式:set()和get()

    举例:去银行存钱和取钱
    存钱的过程:需要带着钱(有参数),不用带着钱回来(无返回值)
    取钱的过程:不需要带着钱(没有参数),带着钱回来(有返回值)
    

四 、构造器

1.1构造器(构造方法)

  • 作用:
    1.构造器中隐式的内容给对象进行成员初始化(day12讲解,实例初始化过程)
    2.构造器中显式的内容给对象进行变量的赋值
  • 格式:
修饰符 类名 () {
     //隐式内容
     //显式内容
}

1.2构造器的注意事项:

1.构造器的名字必须和所在类名相同
2.构造器没有返回类型,而且连void都不能有
3.当一个类没有任何的构造器时,JVM自动给其分配一个public无参构造器,用来给对象的成员进行初始化,一旦这个类有任何构造器时,JVM不再给其提供
4.构造器支持重载
5.构造器中包含两个部分,显式部分和隐式部分,隐式部分代码优先于显式部分的代码


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jwwy*

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值