面向过程:当需要实现一个功能的时候,每一个具体的步骤都要亲力亲为,详细处理每一个细节。

面向对象:当需要实现一个功能的时候,不关系具体的步骤,而是找一个已经具有该功能的人帮忙做事情。

面向过程强调步骤,面向对象强调对象(结果)。

面向对象的思想更加符合我们思考的习惯,它可以将复杂的事情简单化,并且将我们从执行者变成了指挥者。

面向对象的语言中包含了三大基本特征:封装、继承和多态。

类和对象

类是一组相关属性和行为的集合。可以把类看成是一类事物的模板,使用事物的属性特征和行为特征来描述该类事物。

现实中描述一类事物主要从两个方面:

1. 属性:该事物的状态信息

2. 行为:该事物能够做什么

  • 对象

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

  • 类和对象的关系

类是对一类事物的描述,是抽象的

对象是一类事物的实例,是具体的

类是对象的模板,对象是类的实例

例如:现在定义一个类来模拟“学生”事物,那么其中就有两个组成部分:

★ 属性(是什么)

姓名 、年龄

★ 行为(能做什么)

吃饭 、睡觉 、学习

对应到java的类当中:

★ 成员变量(属性)

String name ;

int age ;

★ 成员方法(行为)

public void eat(){ }

public void sleep(){ }

public void study(){ }

注意:1. 成员变量是直接定义在类当中的,在方法外边

2. 成员方法不要写static关键字

  • 通常情况下一个类并不能直接使用,需要根据类创建一个对象才能使用:

1. 导包:即指出需要使用的类在什么位置

import 包名称.类名称

对于和当前类属于同一个包的情况,可以省略导包语句不写

2. 创建

格式:   类名称 对象名 = new 类名称() ;

Student stu = new Student() ;

3. 使用:分为两种情况

★ 使用成员变量 :对象名.成员变量名

★ 使用成员方法:对象名.成员方法名(参数)

注意:如果成员变量没有进行赋值,则会有一个默认值,规则和数组一样

当一个对象作为参数传递到方法当中去时,实际上传递进去的是对象的地址。

当使用对象作为方法的返回值时,实际上返回的是对象的地址。

  • 局部变量和成员变量

1. 定义的位置不一样(重要)

局部变量:在方法的内部

成员变量:在方法的外部,直接写在类当中

2. 作用的范围不一样(重要)

局部变量:只有在方法中才可以使用,出了方法就不可以再使用

成员变量:整个类都可以通用

3. 默认值不一样(重要)

局部变量:没有默认值,如果想要使用,必须手动进行赋值

成员变量:如果没有赋值,会有默认值,默认值的规则和数组一样

4. 内存的位置不一样(了解)

局部变量:位于栈内存

成员变量:位于堆内存

5. 生命周期不一样

局部变量:随着方法进栈而诞生,随着方法出栈而消失

成员变量:随着对象的创建而诞生,随着对象被垃圾回收而消失

【有static的是普通方法,普通方法直接调用;没有static是成员方法,成员方法要通过对象来调用】

  • 面向对象三大特征:封装 、继承 、多态

---  封装性在Java中的体现:

1.  方法就是一种封装

2. 关键字private也是一种封装

【 封装就是将一些细节信息隐藏起来,对于外界不可见 】

--- 封装的好处在于可以取到保护代码和数据的作用,增强了代码的安全性,同时也让代码更容易理解与维护。

  • 封装的操作 -- private关键字

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

一旦使用了private进行修饰,则本类当中仍然可以随意访问,但是超出了本类范围之外就不可以直接访问成员变量了,但是可以间接访问,间接访问private成员变量是通过定义一对Getter / Setter 方法

其中命名规则必须是:setXX 或 getXX

对于Getter来说 ,不能有参数 ,返回值类型和成员变量对应

对于Setter来说 , 不能有返回值,参数类型和成员变量对应

public class Student {private  String  name ;private  int  age ;public void setName(String n){name = n ;}public String getName(){return name ;}}
  • this 关键字

this的含义:this代表所在类的当前对象的引用(地址值)

当方法的局部变量和类的成员变量重名的时候,根据“就近原则”,优先使用局部变量,如果此时需要访问本类当中的成员变量,需要使用格式: this.成员变量名   【this帮助在重名的情况下起到区分的作用】

【记住:方法被哪个对象调用,方法中的this就代表那个对象。即谁在调用,this就代表谁。】

  • 构造方法

--- 当一个对象被创建的时候,构造方法用来初始化该对象,给对象的成员变量赋初始值。

(  即专门用来创建对象的方法,当通过关键字new来创建对象时,其实就是在调用构造方法  )

【无论是否定义构造方法,所有的类都有构造方法,因为java自动提供一个无参数构造方法,一旦自己定义了构造方法,java自动提供的默认无参数构造方法就会失效 】

---  格式:   public  类名称(参数类型   参数名称){

方法体;

}

public class Student {private String name ;private int age ;// 无参数的构造方法public Student(){}// 有参数的构造方法public Student(String name , int age){this.name = name ;this.age = age ;}}

---  注意:

1. 构造方法的名称必须和所在类的名称完全一样,连大小写也要一样

2. 构造方法不用写返回值类型,连void都不用写

3. 构造方法不能return一个具体的返回值

4. 如果没有编写任何的构造方法则编译器会赠送一个构造方法,赠送的构造方法没有参数,

方法体什么都不做

public Student(){ }

5. 一旦编写了至少一个构造方法则编译器将不会再赠送构造方法

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

重载:方法名称相同,参数列表不同

全参数构造方法的好处在于可以直接将现存的数据传入而不使用Setter方法,但如果要修

改数据还是要Setter方法(获取还是要用Getter方法)

标准代码 -- JavaBean

JavaBean 是 java 语言编写类的一种标准规范

一个标准的类通常要拥有下面四个组成部分:

1. 所有的成员变量都要使用private关键字修饰

2. 为每一个成员变量编写一对Getter/Setter方法

3. 编写一个无参数的构造方法

4. 编写一个全参数的构造方法

以学生类为例编写符合 JavaBean 规范的类 ,标准代码如下:

public class Student{// 成员变量private String name ;private int age ;// 构造方法public Student(){}public Student(String name , int age ){this.name = name ;this.age = age ;}// 成员方法public void setName(String name){this.name = name ;}public String getName(){return name ; }public void setAge(int age){this.age = age ;}public int getAge(){return age ;}}

测试类代码如下:

public class TestStudent{public static void main(String[] args){// 无参数构造使用Student s = new Student() ;s.setName("小池") ; s.setAge(22) ; System.out/println(s.getName() + "-----" + s.getAge()) ;// 带参数构造使用Student st = new Student("小君",22);System.out.println(st.getName() + "-----" + st.getAge()) ;}}

java学习之面向对象和封装相关推荐

  1. 深圳Java学习:面向对象【重点知识】

    深圳Java学习:面向对象[重点知识] 在Java的学习中,面向对象应该是Java技术的重中之重,虽然在生活中没有对象可以面对,但在技术中还是要一直接触面对对象,而且不可避免.今天千锋小编对面向对象来 ...

  2. Java学习笔记——面向对象

    声明:文章首发于我的个人微信公众号Java编程社区,查看更多文章与学习资源请移步我的公众号Java编程社区 万物皆对象 学习Java,我们都听过这句话:万物皆对象.那么什么是对象? 我们先来看看人类是 ...

  3. Java学习笔记——面向对象 1

    声明:本文首发于我的个人微信公众号[Java编程社区],查看更多文章与学习资源请移步我的公众号Java编程社区 万物皆对象 学习Java,我们都听过这句话:万物皆对象.那么什么是对象? 我们先来看看人 ...

  4. #Java学习总结面向对象+抽象+接口

    1.类和对象 类 类是对现实生活中一类具有共同属性和行为的事务的抽象:类是对象的数据类型,类是具有相同属性和行为的一组对象的集合.简单理解:类就是对现实事务的一种描述. 类的组成: 属性:指事物的特征 ...

  5. Java学习:面向对象编程

    探索面向对象编程 面向对象 任务1.采用面向对象方式求三角形面积 (一)编程实现 (二)讲解知识点 (三)拓展练习 任务1.创建学生类并测试 任务2.采用面向对象求解一元二次方程 面向对象 面向对象( ...

  6. Java学习第十二天<封装详解><继承><super详解><方法重写><多态>

    封装详解 //类 public class Student {//名字 学号 性别 属性私有(new 以后不能赋值)private String name;private int id;private ...

  7. day8 Java学习(面向对象.多态接口)

    面向对象    多态: 概述:事物存在的多种形态.  多态前提: *要有继承关系 *要有方法重写 *要有父类引用指向子类对象. 成员变量访问:           编译看左边(父类),运行左边(父类) ...

  8. 【java学习】 面向对象编程+java购物车系统

    文章目录 一.设计对象 二.内存机制 三.购物车系统 四.构造器 构造器 this关键字的作用 一.设计对象 类和对象是什么? 类:是共同特征的描述(设计图); 对象:是真实存在的具体实例; 如何设计 ...

  9. Java学习_day009面向对象(oop):对象和类(下)

    方法的签名:方法名+参数列表 在一个类中不允许出现多个方法签名重复的情况 一.方法的重载(overload) 发生在同一个类中,方法名称相同,参数列表不同,方法体就不同. 编译器在编译时会根据方法的签 ...

最新文章

  1. GBDT和GNN结合,结果怎么样?
  2. [ML]--梯度下降 GD 的理解和探究
  3. 为什么我的对象被 IntelliJ IDEA 悄悄修改了?
  4. php js 比较,PHP与JS的比较
  5. android手机安装python并写代码运行
  6. 使用画图软件gunplot出现的问题和解决办法
  7. 激活函数、损失函数及其优化方法总结
  8. Maple 教程(一)---初认识
  9. 数据库实验一:创建数据库和表
  10. MIUI主题风格_一种Android系统换肤功能的设计
  11. Win7系统自动关机设定让你更轻松
  12. 运放电路的工作原理_一文教你巧识滤波、稳压、比较、运放电路
  13. FMRI及NMR简介
  14. Android图像处理-像素化的原理及实现
  15. NFT 的价值从何而来
  16. js和java导出txt文件怎么打开文件_JS本地文件操作,JS读写txt文件
  17. 一元多项式式计算器(哈工大数据结构实验)
  18. c语言程序图书检索源代码,C语言程序设计(图书管理系统)源代码 倾情奉献
  19. amp;#9733;《唐琅探案》后记【2】
  20. Matlab绘制面积堆叠图/面积图

热门文章

  1. Dialogs 对话框
  2. Thinkpad T480 新机分区
  3. ML-Agents案例之地牢逃脱
  4. C语言高级用法---container_of()
  5. 荧光定量PCR:基因相对表达量计算方法
  6. CVPR2020|比CNN更强有力,港中文贾佳亚团队提出两类新型自注意力网络
  7. PicPick软件系统语言设置
  8. 【一神】10.15系统 oc引导 amd黑苹果 cpu识别错误/未知
  9. UE4像素流pixelstream的一些坑
  10. APISpace 预热开启