面向对象(类,封装,this,构造方法)

无论面向对象还是面向过程, 这俩都是解决问题的思路而已, 只是角度不同.

面向过程:

强调解决问题的每一个步骤都亲力亲为,每一个细节都自己手动实现.

面向对象:

使用特定功能对象去解决特定的问题, 每一个细节不需要关注,只需要创建对应的对象即可.

面向对象是基于面向过程的

类和对象及他们的关系
类: 具有相同特征和行为(功能)的事物的统称 , 是一个抽象概念
对象: 这类事物中某个确定的个体

类和对象的关系
一个类可以创建多个对象 , 类是对象的抽象, 对象是类的实例.

描述一个事物----> 类

特征----> 成员属性(成员变量) 
行为(功能)---> 成员方法

类的创建格式:
修饰符 class 类名{

数据类型 成员变量名1;
数据类型 成员变量名2;
数据类型 成员变量名3;
...

成员方法1;
成员方法2;
成员方法3;
...
}

修饰符: public
类名: 标识符 见名知意
成员变量列表: 事物的特征 ,只写当前场景关注的特征,没必要把事物的所有特征全都写上 . 写法类似于定义变量
成员方法: 事物的行为(功能) 只写当前场景关注的行为(特征) 写法上类似于之前的定义方法, 区别在于此时写的话要去掉static

当一个类第一次使用的时候要载入到方法区 , 后续每一次再使用这个类 就不需要重复载入

成员变量和局部变量区别
1.定义的位置不同
局部变量: 定义在方法的内部
成员变量: 定义在类的内部, 方法的外部
2.在内存中的存放位置不同
局部变量: 局部变量存放在 栈区
成员变量: 成员变量存放在 堆区
3.生命周期不同
局部变量: 随着方法的调用而产生,随着方法的结束而消失 相对较短
成员变量: 随着对象创建而产生,随着对象数据回收而消失 相对较长
4.初始值不同
局部变量: 没有初始值, 使用之前必须进行赋值
成员变量: 有初始值, 引用类型 null, 整数 0 , 小数0.0 字符:空格, 布尔 false

封装性
封装是 面向对象的三大特征之一, 另外两个是继承 多态

类名:Person
属性:name ,age
方法:展示

封装好处: 提高程序的安全性

对属性封装的步骤:
1.使用private关键字修饰对应的属性 , 防止外界通过对象名.属性的方式直接访问属性
2.书写对应属性的set和get方法 , 给外界一个访问属性的通道

封装是面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界无法直接操作和修改。
封装的原则:
将不需要对外提供的内容都隐藏起来。
把属性隐藏,提供公共方法对其访问。
成员变量private,提供对应的getXxx()/setXxx()方法

好处:
通过方法来控制成员变量的操作,提高了代码的安全性
把代码用方法进行封装,提高了代码的复用性

变量访问的就近原则:
当出现多个重名变量的时候, 目标代码使用的是离这行代码最近的那个变量

this可以解决的问题:
当局部变量和成员变量重名的时候, 想在特定的代码处访问成员变量, 就可以在目标行的变量名前面加this.
this只的是当前调用这个方法的对象
this 谁调用指的就是谁

构造方法
是一个方法. 作用: 给对象的数据赋值默认值

定义格式:
修饰符 方法名(参数列表){

若干条初始化语句

}
修饰符: public
方法名: 直接写类名
参数列表: 跟之前定义方法写形式参数一致
注意 构造方法 没有返回值类型

如果我们自己不手动写无参数的构造方法, 系统会默认提供一个,如果我们自己手动书写了无参的构造方法,
那系统就不会给提供,使用的时候直接使用我们自己写的构造方法

构造方法 也是方法 也可以进行重载

但凡我们手写了任意的构造方法, 系统就都不会给提供无参构造方法了 ,
当此时非要用无参的构造方法创建对象的时候, 必须自己手写无参的构造方法

时间: 2024-12-25 05:26:47

面向对象(类,封装,this,构造方法)的相关文章

面向对象,封装,构造方法,this关键字,main,继承,接口,多态阶段性小结

一.局部变量和成员变量 成员变量:  定义在类中变量 局部变量:  定义在方法中变量 1成员变量与局部变量的区别: 应用范围 成员变量在整个类内都有效 局部变量只在其声明的方法内有效 生命周期   成员变量: 它属于对象,它随着对象的创建而创建,随着对象的消失而消失 局部变量: 使用完马上释放空间. 存储位置  成员变量属于对象,它存储在堆内,堆内的实体,当没有引用指向其时,才垃圾回收清理 局部变量存在栈内存中,当不在使用时,马上就会被释放. 初始值 成员变量它存储在堆中,如果没有赋初值,它有默

阶段1 语言基础+高级_1-2 -面向对象和封装_17构造方法

新建一个学生类   新建demo02Student 在用new创建类的时候,后面的类名称其实就是构造方法 new对象就是在调用构造方法 写上return 就会报错.构造方法中,不能产生返回值 定义了成员变量name和age 这两个.在构造函数内赋值 全参,两个成员变量都包含了.这样省的去调用setXX方法了.直接在构造函数内就可以给成员变量进行赋值 给成员变量加上get和set的方法 这样的话,set不就是白写了吗.直接在构造函数内就可以赋值了. 原文地址:https://www.cnblogs

黑马程序员-Java基础-面向对象-类和对象、封装、构造函数、this、static、饿汉式&懒汉式

第一讲  面向对象概念 1.  定义 相对于与面向过程而言的,将功能封装进对象,我们只关心具备了该功能的对象,而不用关注对象的具体细节. 面向对象的特点:使复杂问题简单化.我们只关心什么对象能处理什么事情,而不用关心具体的实现细节. 2.  面向对象特征 封装.继承.多态. 第二讲  类和对象的关系 1.  概述 类就是:对现实生活中事物的描述,可以是实体的事物也可以是一件事等: 对象是:是某类事物的实例,实实在在存在的个体: 映射到java中,描述就是class定义的类. 具体对象就是对应ja

面向对象-类-成员变量-局部变量-this

1.能够理解面向对象的思想     面向对象是基于面向过程的编程思想,强调的是对象,由对象去调用功能.它是一种更符合人类习惯的编程思想,可以将复杂的事情简单化,将我们的角色从执行者变成了指挥者. 2.能够明确类与对象关系     类是客观世界中相关事物的基本特征抽象.对象是该类事物的具体体现.比如手机是一个类,而iphone7就是一个对象. 3.定义学生类 public class Student{     //成员变量     String name;     int age; //成员方法 

面向对象的封装性和多态性

面向对象之封装性: 1.继承要符合is-a的关系.即"子类is a 父类"——子类是父类.如:卡车是汽车,卡车is a 汽车. 2.父类中如果用Protected修饰符,表示只允许其子类访问,而不允许其他非子类访问: 父类中如果用private修饰符,子类是不能访问的. 3.除了构造方法不能被子类继承外,其他都可以直接被继承.可以用base关键字调用父类的构造函数:语法如下 :base(参数变量名) 使用base还可以调用父类的属性和方法. 注意:子类构造函数中已经定义了这些参数,在b

封装和构造方法

类与对象的关系 产生一个对像必须new一次 类名首字母大写 面向对象的三大特征:封装 继承 多态 二,为什么java中需要封装? 数据的有效性和安全性 保护数据的有效性和安全性,所以java中需要封装 三,什么是封装? 第一层含义:对象的属性和方法是一个统一的整体,不可分割 第二层含义:封装是一种保护数据的机制 四,怎么样使用封装保护数据? 属性封装: 以前 String name; 现在 : (1)private String name;?//私有的,只有自己可以用,其他类拿不到对象的属性 (

java基础面向对象之封装

java基础面向对象之封装 2017-01-15 封装 1)封装性就是保证类内部被外部类不可见 2)所有属性都必须使用private关键字声明 3)封转后的属性如果要被外部所访问就必须实现set和get方法 例如: 使用了private声明的属性只有在自己的类是可见的 1 class Book{ 2 private String title ; //使用private声明的属性 3 private int price ; 4 } 5 public class PrivateDemo1 { 6 p

面向对象:封装

1:找对象:对象可以是问题中出现的任何人,事物或者实体,简单点就是'东西'. 2:在已经找到的问题域中的对象后,我们就要来编写一个类来描述每个对象的属性和行为. 属性:属性指对象身上有什么值数据: 行为:行为是对象可以做什么,或者我们想这些对象做什么:(功能): 万物皆对象:但是对象因关注而产生:*******: 引用数据类型行: 类  AND 数组 实用类: 1:类是一个模板,是不能直接是用的:用来在代码级别产生某个对象: 2:产生一个学生对象 public  static void main

图解Python 【第五篇】:面向对象-类-初级基础篇

由于类的内容比较多,分为类-初级基础篇和类-进阶篇 类的内容总览图: 本节内容一览图: 今天只讲类的基础的面向对象的特性 前言总结介绍: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个"函数"供使用(可以讲多函数中公用的变量封装到对象中) 对象,根据模板创建的实例(即:对象),实例用于调用被包装在类中的函数,对象是一个类的实例 实例(instance):一个对象的实例化实现. 标识(identity):每个对象的实例都需要一个可