Java基础——类、对象和封装

面向对象思想

  1. 概述:面向对象是java语言编程使用的一种解决问题的编程套路,是一个编程思路
  2. 面向过程和面向对象区别:
    面向过程:注重解决问题的基本步骤,强调解决问题的过程;比如:碰到一个问题,要考虑每一步怎么去完成。
    面向对象:注重解决问题的主体,强调找一个主体去完成;比如:碰到一个问题,不需 要考具体的步骤,考虑如何找到一个主体
  3. 面向过程和面向对象的具体关系:
    面向对象是更高一层的编程思想;面向对象是基于面向过程的,需要先有面向过程,才 能有对象去使用
  4. 使用面向对象思想好处:
    (1)可以减少代码的冗余量
    (2)可以降低代码解决问题的难度
    (3)由执行者变为了指挥者
  5. 特征:
    封装、继承、多态

类和对象

类的定义
  1. 一个类型都无非是从两点来进行定义和表示:
    属性:表示当前类型的一些概述和介绍
    在java语言中,都是通过一个个变量来定义
    定义属性变量和之前不一样,需要在类中方法外定义(成员变量)
    行为:表示当前类型的一些功能,可以做哪些事情
    在java语言中,通过一个个方法来表示行为和功能
    表示类型的方法:修饰符统一写为public
  2. 特点:不管是带着主方法的测试类也好,还是自己定义的类型也好,在编译之后都会生 成一个对应名称的.class字节码文件
对象的定义
  1. 概述:对象表示某一个类型的实例,表示一个真实的事物,具体事物
  2. 创建对象的格式:
    类型名 对象名 = new 类型名();
  3. 说明:
    (1)类型名:创建哪一个类的实例,就写哪一个类的名字即可
    (2)对象名:起一个名字 小驼峰命名法
    (3)=:将右边的对象地址赋值给左边的对象名
    (4)new:关键字 创建对象的关键字
    (5)类型名:和前面的保持一致
    (6)类型():构造方法
  4. 对象访问属性:
    对象名.属性名
    对象属性赋值:
    对象名.属性名 = 值;
  5. 访问方法:
    对象名.方法名();
成员变量和局部变量的区别
  1. 成员变量:在类中方法外定义的变量
  2. 局部变量:在方法中定义的变量
  3. 区别
    (1)定义的位置不同
    (2)在空间中存储的位置不一样
    局部变量:在栈内存中分类空间存储值
    成员变量:在对象中创建空间,对象在堆内存中,成员变量在堆内存中
    (3)生命周期不同
    局部变量:随着方法的调用而存在,随着方法的出栈而消失
    成员变量:随着对象的创建而存在,随着对象的消失而消失(当没有引用指向堆 内存中的对象时,对象会被垃圾回收机制回收掉)
    (4)默认值不同
    局部变量没有默认值,必须先赋值后使用
    成员变量有默认值

封装

封装
  1. 概述:在客观世界中,每个人的属性都是私有的都是隐藏的,并不是信息都可以被随意的访问。在java语言中每个类的属性应该也是私有的,应该是也隐藏的,如果满足一定的条件才可以访问属性或者非法。
  2. 封装的原则:
    (1)隐藏事物的属性和行为
    (2)提供一些公共的访问方式
  3. 好处:
    (1)提高数据的安全性
    (2)也可以提高代码的复用性
  4. 封装属性和方法使用一个关键字:
    private :私有的
    特点:
    可以使用该关键字修饰变量
    修饰方法
    修饰类型或者接口
    修饰常量
    效果:
    一旦属性和方法被priavte修饰之后,只可以在本类中被访
  5. 一旦将属性封装之后,外界是不能随意的访问,但是也不能访问了
    所以需要给属性提供一些公共的访问方式
    给属性赋值或者取值分别提供一个方法:
    给属性赋值的方法:set方法
    给哪一个属性赋值,方法名称就写为:set属性名
    给属性取值的方法:get方法
    取哪一个属性的值:方法名称为:get属性名
变量访问原则

就近原则:
在某个方法中,如果需要使用某一个变量
首先在当前方法中寻找,有没有该变量的定义,如果方法中有定义,就直接使用
如果在方法中没有该变量的定义,就去当前方法所在的类中寻找有没有定义,如果有定义就使用,如果当前类中也没有该变量定义,就编译报错

封装优化
  1. 在定义变量时应该做到见名知意,但是给set方法的形参定义名字之后,不能给对象中 的属性赋值成功,因为有就近原则。

  2. 为了避免这个错误,就使用了this关键字,被this修饰之后的属性,就直接表示当前对 象中的属性。

  3. this:当前对象 哪一个对象调用this所在的方法,this就表示哪一个对象

     public class Demo {
     	private String name;
     	private int age;
     	public String getName() {
     		return name;
     	}
     	public void setName(String name) {
     		this.name = name;
     	}
     	public int getAge() {
     		return age;
     	}
     	public void setAge(int age) {
     		this.age = age;
     	}
     	
     }
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值