Java教程

004—JAVA面向对象前三天知识精华总结

本文主要是介绍004—JAVA面向对象前三天知识精华总结,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

面向对象的三大特征

  • 封装(Encapsulation)

  • 继承(Inheritance)

  • 多态(Polymorphism)

对象:是一个具有特定属性和行为特征的具体事物

:是一类具有相同特征的事物的抽象描述,是一组相同【属性】和【行为】的对象的集合。

类与对象的关系

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

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

  • 类是对象的模板,对象是类的实体

成员变量

        变量的分类

局部变量:定义在方法体内或其他局部区域内的变量(之前所使用的都是main方法中定义的变量,为局部变量)。

成员变量:定义在类的成员位置,在方法体外,与方法(例如main方法)平行的位置。并且有修饰符修饰。根据修饰的不同成员变量又分为:

  •                 类变量:或叫静态变量,有static修饰的成员变量。
  •                 实例变量:没有static修饰的成员变量。    

 

说明:常用修饰符有public、缺省、private、protected、final、static

数据类型可以是任意基本数据类型和引用数据类型。

成员变量的访问

  • 实例变量的访问:

    • 对象名.静态成员变量

  • 类变量的访问:

    • 类名.静态成员变量

    • 对象名.静态成员变量(不推荐)

成员变量有默认初始值

方法

        方法也叫函数,是一个独立功能的定义,是一个类中最基本的功能单元。 方法描述的是类或对象的行为信息。

成员方法的分类:

根据修饰不同方法主要分为两类:

  •         实例方法:没有static修饰的方法,必须通过实例对象来调用。
    • 静态方法:有static修饰的方法,也叫类方法,主要特点是可以由类名来调用。

方法必须先声明后使用,不调用不执行,调用一次执行一次。

注意:

1.方法只声明 不调用 不会执行的
    2.方法的执行顺序只与调用顺序有关
    3.方法与方法是兄弟关系
    4.方法执行结束会回到方法调用处

返回值类型

void::代表当前方法 不返回任何内容 ​ 数据类型: 必须返回一个该类型【匹配】的值 ​ int:代表当前方法【必须】返回一个int值

实例方法与静态方法的区别

方法的声明:
    静态方法: 有static关键字的方法
    非静态方法:没有static关键字的方法
调用方式:
    静态方法 参考静态变量 类名.方法名();
    非静态方法:参考实例变量  对象名.方法名();
    注: 在本类中 可以省略类名/对象名调用
资源引用问题:
    静态方法: 只能【直接】调用静态资源
    非静态方法:可以直接调用所有的资源

方法调用内存分析

方法不调用不执行,调用一次执行一次,每次调用会在栈中有一个入栈动作,即给当前方法开辟一块独立的内存区域,用于存储当前方法的局部变量的值,当方法执行结束后,会释放该内存,称为出栈,如果方法有返回值,就会把结果返回调用处,如果没有返回值,就直接结束,回到调用处继续执行下一条指令。

方法参数的值传递机制

方法的参数传递机制:实参给形参赋值

  • 方法的形参是基本数据类型时,形参值的改变不会影响实参;

  • 方法的形参是引用数据类型时,形参地址值的改变不会影响实参,但是形参地址值里面的数据的改变会影响实参,例如,修改数组元素的值,或修改对象的属性值。

    • 注意:String、Integer等特殊类型容易错

方法重载

方法重载:指在同一个类中,允许存在一个以上的同名方法,只要它们的参数列表不同即可,与修饰符和返回值类型无关。

参数列表不同:指的是参数个数不同,数据类型不同,数据类型顺序不同。

可变参数

在JDK1.5之后,如果我们定义一个方法时,此时某个形参的类型可以确定,但是形参的个数不确定,那么我们可以使用可变参数。

【修饰符】 返回值类型 方法名(【非可变参数部分的形参列表,】参数类型... 形参名){  }

注意:

(1)一个方法最多只能有一个可变参数

(2)如果一个方法包含可变参数,那么可变参数必须是形参列表的最后一个

命令行参数(了解)

通过命令行给main方法的形参传递的实参称为命令行参数

对象数组

即数组的元素可以是基本数据类型,也可以是引用数据类型。当元素是引用数据类型是,我们称为对象数组。

注意:对象数组,首先要创建数组对象本身,即确定数组的长度,然后再创建每一个元素对象,如果不创建,数组的元素的默认值就是null,所以很容易出现空指针异常NullPointerException。

 为什么需要封装?

高内聚:类的内部数据操作细节自己完成,不允许外部干涉;

低耦合:仅对外暴露少量的方法用于使用

隐藏对象内部的复杂性,只对外公开简单的接口。便于外界调用,从而提高系统的可扩展性、可维护性。通俗的讲,把该隐藏的隐藏起来,该暴露的暴露出来。这就是封装性的设计思想。

权限修饰符

权限修饰符可以修饰:

外部类:public和缺省

成员变量、成员方法、构造器、成员内部类:public,protected,缺省,private

成员变量封装的目的

隐藏类的实现细节

让使用者只能通过事先预定的方法来访问数据,从而可以在该方法里面加入控制逻辑,限制对成员变量的不合理访问。还可以进行数据检查,从而有利于保证对象信息的完整性

便于修改,提高代码的可维护性。

初识this关键字

当局部变量与类变量(静态成员变量)同名时,在类变量前面加“类名.";

当局部变量与实例变量(非静态成员变量)同名时,在实例变量前面加“this.

this代表当前对象的引用,即当前被创建的对象

构造器的作用

用于创建并初始化对象

注意:构造器只为实例变量初始化,不为静态类变量初始化

注意事项:

  1. 构造器名必须与它所在的类名必须相同。

  2. 它没有返回值,所以不需要返回值类型,甚至不需要void

  3. 如果你不提供构造器,系统会给出默认无参数构造器,并且该构造器的修饰符默认与类的修饰符相同

  4. 如果你提供了构造器,系统将不再提供无参数构造器,除非你自己定义。

  5. 构造器是可以重载的,既可以定义参数,也可以不定义参数。

  6. 构造器的修饰符只能是权限修饰符,不能被其他任何修饰

this调用构造器

构造器重载时,可以在一个构造方法中调用另一构造方法,以简化代码。

格式:this(参数列表);

public Employee(){
}

public Employee(String id){
	this.id=id;
}

public Employee(String id, String name){
    this(id);//this调用一个参数的构造器
    this.name = name;
}
public Employee(String id, String name, double salary, char gender){
    this(id,name);//this调用2个参数的构造器
    this.salary = salary;
    this.gender = gender;
}

注意:

this调用构造器的语句,只能构造器中第一行位置。

属性赋值小结

截止到目前,我们讲了很多位置都可以对类的属性赋值。现总结这几个置,并指明赋值的先后顺序。 赋值的位置及先后顺序: ① 默认初始化 ② 显式初始化 ③ 构造器中初始化 ④ 通过“对象 .属性“或对象 .方法”的式赋值

标准JavaBean

JavaBean 是 Java语言编写类的一种标准规范。符合JavaBean 的类,要求:

(1)类必须是具体的(非抽象)和公共的,

(2)并且具有无参数的构造方法,

(3)成员变量私有化,并提供用来操作成员变量的setget 方法。

(比较理解POJO : Plain Ordinary Java Object,主要承载数据,不涉及业务逻辑)、

继承的好处

  • 提高代码的复用性

  • 提高代码的扩展性

  • 类与类之间产生了关系,是学习多态的前提

Idea中方法的提取操作方式

 Idea查看继承关系

 

 Idea中Structure工具

 

 

 

 

这篇关于004—JAVA面向对象前三天知识精华总结的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!