对象和类

来源:互联网 发布:怎么打开vc软件 编辑:程序博客网 时间:2024/06/06 09:52

编程思想:需求- ->建立思路- ->目标代码

面向过程的思想

自顶向下 逐步求精 伪代码——代码

从程序的执行过程入手,将完整的过程细化成多个子过程,再将子过程细化,直至完成代码为止

非结构化编程:Eg: goto
结构化编程: Eg: 函数

面向对象的思想
1)对象的基本概念

对象:一切客观存在的事物都是对象;
小对象组成大对象、对象间调用彼此方法
计算机中的对象:JVM中连续的存储空间(数据)

2)对象的定义:对象一定具备自己的特征和行为

对象的特征:对象有什么—->将来用数据代替特征描述,称之为对象的属性

对象的行为:对象能做什么—->将来用函数来代替对象的行为,称之为对象的方法

3)对象和对象之间会通过某种方式产生联系:

方法调用的关系:一个对象可以调用另外一个对象的方法,从而在这两个对象中产生关联

属性组合方式:一个对象的属性可能又是一个对象

4)面向对象的特点

各司其职
组成系统的每一个对象,其功能应该 单一
可重用性
对于类似的功能,不同的系统可以重复使用相同的代码
可扩展性
在不修改原有系统的前提下,对系统的功能进行扩展
弱耦合性
对象和对象之间的联系应尽可能的弱化

5)解决客观问题:

面向对象的思想:
首先选择符合要求的对象,让对象之间彼此联系,彼此配合,达到我们的目的。


类(class)

1)类的概念

多个相同或同类型的对象所抽象出来的共性。

类就是对象的模板,用来定义对象的属性和方法。

2)类的组成

属性:描述对象的特征

定义位置:类的内部,方法的外部。

别称:成员变量、实例变量

定义属性=定义变量

实例变量的默认值规则与数组元素默认值一样

和局部变量发生命名冲突时局部优先

class Student{   //定义学生类    String name;    int age;    boolean sex;    double score;    //学生的学习方法    public void study(){            System.out.println("我爱学习~~~");    }    //学生的打招呼方法    public void sayHello(){            System.out.println("雷侯啊!");    }}

方法

定义位置:类的内部,其他方法的外部。

语法:

访问权限修饰符 返回值类型 方法名(参数表)抛出的异常{    //方法体}

方法的声明:对象能做什么

方法的实现:对象怎么做


对象

1)概念:

通过类(模板)创建的实例,每个实例(对象)拥有独立的特征。

2)创建对象:

语法:

new 类名();new Student();new Teacher();

创建什么类型的对象就可以给什么类型的引用赋值

Student stu;stu = new Student();Teacher tea;tea = new Teacher();

3)访问对象中的属性与方法:

语法:

访问属性:引用名.属性名给属性赋值:引用名.属性名 = 值;**注意:属性的数据类型

例:创建学生对象并使用属性与方法

704


成员变量与局部变量的区别

p12

p11


方法的重载(OverLoad)

概念:在一个类中可以定义多个同名的方法,参数表不同,屏蔽使用时的差异。

语法:方法名相同,参数个数、类型、顺序不同。返回值类型、修饰符无要求。

Eg:
707

编译时多态

调用时编译器会根据参数匹配相应的方法

708


构造方法

1)概念:构造方法是一种特殊的方法,创建对象时自动调用。

2)作用:通常在创建对象时,为属性赋值,完成初始化的任务。

3)语法:

方法名与类名一致(注意大小写)
没有返回值类型
创建对象时会自动调用,不可手动调用

例:为Student类添加无参构造方法:

710

运行结果:

this is Student()this is Student()

Eg:给构造方法添加参数:

712

Eg:使用参数为属性赋值:

714

注意

1、如果一个类没有定义任何构造方法,编译器会默认提供无参构造。
2、如果手动添加构造,则默认提供的无参构造就会消失
3、构造方法也可以重载,遵循重载规则


对象的创建过程

  1. 分配空间:为属性赋予默认值
  2. 初始化属性:为属性赋初值(动态初始化代码块)
  3. 调用构造方法:可以再次为属性赋值

动态图例:

721


参数传递规则

  1. 基本类型传值,两者之间任何一方更改不影响另一方

  2. 引用类型(对象、数组)传地址(形参和实参会指向内存中的统一对象)两者之间一方更改,影响另一方

    动态图例:
    720


this关键字

1)This :代表当前对象引用,成员变量与局部变量命名冲突时可以使用this.来明确该变量为成员变量。


716

运行结果:

717

解决方案:使用this.变量名,明确该变量为成员变量

运行结果

719

this():访问其他构造方法,提高构造方法的复用性

※注意:this()只能出现在构造方法的第一行

原创粉丝点击