欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-03-16 10:48:52
...

类与对象思维导购图

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方法或属性