面向对象编程——类与对象一

类与对象思维导购图

1、面向对象三大特征

  • 封装性:将客观事物封装成为抽象的类,内部操作对外部而言不可见(保护性)
  • 继承性:可以实现现有类的所有功能,并在原有的基础上可进行功能上的扩展。要使用继承,必须满足is-a原则
  • 多态性:指一个类实例的相同方法在不同情形下有不同的表现形式

2、类与对象的定义与使用

  • 先有类,才有对象
  • 类的组成:属性+方法
  • 类中的属性与方法(不带static关键字的)只能通过对象调用
  • 对象的产生语法:类名称 对象名称 = new 类名称();
  eg:产生一个名为per的Person对象           
     Person per = new Person();

3、对象内存分析

  • 栈内存:存放的是局部变量(各种基本数据类型、对象引用-对象名字)
  • 堆内存:一般new就表示在堆上分配空间,所有方法共享此内存
  • 垃圾空间:没有任何栈内存指向的堆内存空间
  • 对象的引用传递:多个栈内存指向同一块堆内存
    对象内存分析

4、private实现封装

  • 将属性、方法用private封装后,被封装的属性与方法只能在本类中使用,类外部不可见,从而解决属性不安全问题
  • 被private修饰的方法,要想访问必须提供getter与setter方法。其中getter方法取得内容,setter方法修改内容

private不能用于外部类的封装,但可以用于内部类的封装,可以用于封装函数类的设计原则:

  1. 编写类的时候,没有额外说明,所有属性必须使用private封装(成员变量)
  2. 属性若要被外部访问,必须定义相应的getter与setter方法

5、构造方法(对类中属性初始化)
定义:构造方法是在使用关键字new实例化新的对象时调用的方法

1.Person 2.per = 3.new 4.Person();

其中:1表示类名称;2表示对象引用;3表示在堆上开辟空间;4表示构造方法(无参构造)

5.1 构造方法的特征

  1. 构造方法名称必须与类名称相同
  2. 构造方法没有返回值类型声明(eg:没有void)
  3. 每个类中一定至少存在一个构造方法,如果没有明确定义,系统会自动生成无参构造,若在类中自定义了构造方法,则系统不再默认生成无参构造

5.2 构造方法的重载
方法重载:方法名称相同,参数的个数或类型、顺序不同,与方法返回值无关
注意点:构造方法的重载仅限于参数个数不同

6、this关键字

  • this表示调用本类属性:就近取用原则,只要在类中访问类的属性,一定要加上this关键字

  • this表示调用本类方法:
    (1) 调用普通方法:this.方法名(方法参数),明确表示调用的是本类方法,尤其是在有继承关系时
    (2) 调用构造方法: this(方法参数),注意:this调用构造方法必须放在构造方法首行,且this调用构造方法不允许成环

  • this表示当前对象:当前调用的属性或方法是通过哪个对象调用的,this就指代他

7、static关键字
7.1 static变量-类属性(静态属性)

  • static属性称为类属性,保存在全局数据区中,通过类名调用,与对象实例化无关,所有该类对象共享此属性值。
  • 非static属性称为成员变量或对象属性,每个对象都有此属性且值都不一样
    在这里插入图片描述
    被static修饰后,其属性变为共享属性,不会再每产生一个对象被重新获得一次

注意点:

  • 局部变量不能用static修饰
  • static和private均不能用于外部类,内部类可以
  • 一般没有明确说需要共享属性,使用非static

7.2 static方法-类方法(静态方法)
直接通过类名调用,与大型实例化无关,即没有new对象。常见于工具类方
注意点:

  • 所有的static方法不允许调用非static定义的属性或方法
  • 所有的非static方法允许访问static方法或属性
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值