JAVA面向对象(一)

Java 面向对象编程 阐述(一)

 

1、面向对象编程

面向对象编程(Object Oriented Programming,OOP)是将现实生活中的概念通过程序进行模拟,其中有两个最重要的概念:对象、类

对象具有属性和行为

对象是指某个具体事物,而同一类事物有其共性,属性和行为就是其共性

对这些共性进行归纳,就形成了类,这个过程我们称为抽象

 

 

2、类、对象与面向对象编程

l 以前的编程方式是面向过程,每个具体的功能都需要我们去进行具体的实现

面向对象的思路则不同,我们需要完成某个功能,只需要向对象发送一个“命令”,而具体怎么完成功能,是由该对象所属的类去定义的

 

3、类的定义

l 类是一个模板,用于创建同一类型的对象

l 面向对象编程的基本元素是类,类确定了对象的形式和行为

 

 

4、类的声明1

Java中定义一个类使用关键字class ,一个合法的标识符和一对表示程序体的大括号

l <classname>代表类的名称,类名是一个名词,采用大小写混合的方式,每个单词的首字母大写。

l <body of the class>包含属性和方法的声明

 

 

5、类的声明2

l 理解类的最重要的事情就是它定义了一种新的数据类型

类一旦定义后,就可以用这种新类型来创建该类型的对象。这样,类就是对象的模板(template),而对象就是类的一个实例(instance)。

l “类”不具备做事的功能:事情由类来定义,但事情是由对象来做的。类是虚拟的,对象才是实实在在的,但对象是由类这个模板产生的

 

 

6、类的属性

 

l “人类”具有了姓名、年龄、性别、地址等属性,对于一个人来说,一旦被创造出来,就具有了这些特征

 

7、类的行为

 

l “行为”是完成某个具体的动作,用方法来表示行为

 

8、类的层次结构

l 类中定义属性与方法,表明了由这个类产生的对象所具有的特征与可以进行的操作

 

 

 

9、对象

l 注意,到此为止,虽然类已经比较完善了,但自始至终并未真正产生一个能做事的对象来,我们只是把所有人的公共特点、行为通过类的形式归纳抽象了出来,那我们到底该怎么使用这个类呢?该如何通过这个类,产生一个具有姓名、年龄等属性,可以吃饭、跑步的对象来呢?

 

 

10、对象的创建

l 类的声明是对某一类事物的描述,是一种抽象,要想使用类,需要生成该类的对象

就好比我们要使用电脑,不可能使用设计图纸帮我们工作,而是需要某一台真正的电脑。设计图纸就是类,而大家使用的电脑则是该“类”电脑的一个对象。所以学完了类的声明,我们来学习如何创建类的对象。

 

11、使用关键字new创建对象

创建对象可以使用关键字new,语法如下

 

生成一个“人类”对象就好比一个新baby的降生,第一句代码实际上只是表示“我们要生一个baby,名字已经起好了,叫p”,第二句才是真正的baby降生(内存分配)

 

 

12、使用关键字new创建对象2

要是这个baby正在出生的时候起名字呢?我们通常会采取下面这种声明方式:

和定义简单类型的变量是类似的,只不过需要new关键字来产生对象,而简单数据类型可以直接赋值

 

13、通过对象访问属性和行为

 

通过.”来调用对象的属性和行为

 

 

 

14、增加一个自我介绍的方法

 

 

上例中属性和方法都是在main方法内才被调用的,其实,我们可以更灵活一点

 

 

 

15、属性的默认值

在定义类的属性后,使用的过程中,如果没有给这些属性赋值,那么JVM系统将自动为这些属性赋默认值

数值类型的初始值为0,对于char类型,其值为“\u0000”,显示为空字符,boolean类型的初始值为false,而引用类型(如String)的初始值为null

l 虽然说每一个类的属性均会有默认值,但是为了避免错误,我们应当在使用这些属性之前,对每一个属性进行手工赋值

 

16、构造方法1

 

l Person是类型、p是对象名、new分配内存

那么 Person()是什么?

l 我们没有定义过这个方法

l 该方法名和类名相同

 

 

17、构造方法

其实,“Person()”方法叫做构造方法,构造方法其实就是生产对象的方法、方式

“new Person()”的意思是,通过“Person()”这个构造方法所指定的方式来生产一个人类对象

l “Person()”构造方法由系统自动生成,所以我们才得以使用

l 既然是方法,那么当然可以接受参数

l 无参数的构造方法

l 有参数的构造方法

 

18、无参数的构造方法1

 

l 对于一个类,如果我们不自定义构造方法,那么程序会自动构建无参数构造方法

 

 

19、无参数的构造方法2

l 构造方法的名称与类名一样,且构造方法没有返回值

l 当类中已经创建了构造方法时,编译器就不再为类自动创建构造方法

l 编译器自动创建的构造方法为空方法,当然,我们自定义构造方法时,可以更加灵活的运用

 

 

20、无参数的构造方法3

但是这也存在一个问题,即每次我们创建对象时,初始化代码总是重复执行一样的内容,例如上例,每次创建的Dog对象,名字均为“旺财”

l 有没有办法能够实现在创建对象的同时,自由指定属性的值呢?答案是肯定的,这需要我们更进一步,来看看带参数的构造方法。

 

21、带参数的构造方法1

l 带参数的方法可以更灵活的让我们给属性赋值

 

 

 

 

22、带参数的构造方法2

l 在类中已经声明了一个带参数构造方法的情况下,编译器还会不会自动生成无参数的默认构造方法呢

 

 

 

l 需要手工加上无参数构造方法的声明

 

24、方法重载

 

 

l 一个类中可以有多个方法,方法名相同,参数列表不同,这叫做方法的重载。

l 事实上,重载的方法由于其参数列表的不同,根本上就是不同的方法

 

25、this关键字

l 这么写正确吗?

 

 

l this 关键字的含义:可以为调用了其方法的那个对象生成相应的句柄。也就是说,哪个对象调用了方法,那么这个方法内的this指的就是哪个对象

 

26、static关键字

如果一个成员被声明为static,它就能够在它的类的任何对象创建之前被访问,而不必引用任何对象

l static成员的最常见的例子是main(),因为在程序开始执行时必须调用main(),所以它被声明为static

声明为static的方法有以下几条限制:

它们仅能调用其他的static方法。

它们只能访问static数据。

l ·它们不能以任何方式引用this或super

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值