黑马程序员——面向对象(一)

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

一、概述

1、概念

对象就是程序中用来代表事物的东西。

面向对象是一种思想,能把复杂问题简单化,让我们的角色从执行者的转变为指挥者。

面向对象编程(OOP:Object Oriented Programming)是相对于面向过程而言的。例如将在Windows操作中,将窗口最大化、最小化、关闭窗口这个动作,如果是面向过程编程,就是将最大化、最小化、关闭这个的过程实现了,即将编程重点放在过程上,对象和动作是动宾关系,即最大化窗口;而面向对象编程则是将窗口可能的动作进行封装,编程中心在窗口这个对象上,对象和动作时主动关系,即窗口最大化。

2、面向对象的特点

面向对象的三大特点:封装性,继承性,多态性。

3、类与对象的关系

类是对象的描述,对象是类的实例。

举例:汽车设计图是一个类,根据设计图设计出的汽车则是对象。

二、定义类

1、成员变量:在类中描述这一类对象公有的特征。

2、成员函数:在类中描述这一类对象共有的行为。

三、对象的生命周期

从创建时(new 类名())开始,到没有被任何对象指向时结束:一是main函数运行结束,二是指向对象的变量赋值为null。

四、匿名对象

1、创建了一个对象,但是没有用任何变量指向。

2、应用场景:一个对象如果只用一次就可以写成匿名对象。

例如:new Person().speak();

五、构造函数

1、构造函数的特点

(1)构造函数的名字必须和类名相同;(普通函数的名字也可以和类名相同,但是一般不这么定义)

(2)构造函数没有返回值类型;

(3)使用new关键字创建对象后自动调用;

(4)可以用return语句结束方法,但是不能写return+值。

2、应用场景

如果希望一段代码在对象创建的时候自动调用,就可以将这段代码写进构造函数中去。常用来创建对象时给成员变量赋初值。

3、构造函数的调用

(1)使用new关键字创建对象之后自动调用;

(2)在构造函数的第一条语句使用“this(参数列表)”调用该类的其他构造函数。通常是写一个参数最全的构造函数,其他构造函数都调用这个参数最全的构造函数。

4、系统自动生成的构造函数

在类中如果没有定义构造函数,则系统会自动生成一个无参数的构造函数。

如果定义了构造函数,则系统不再自动生成任何构造函数。

5、构造函数的访问权限

通常构造函数的访问权限都是public型的,否则在外部就不能创建对象。

但是个别情况下在定义类时不希望外部创建对象,则将构造函数定义成private型的。例如单态设计模式。

六、代码块

1、成员代码块:在类中使用“{ }”定义的一段代码,在创建对象时会自动运行。

   与构造函数的区别:成员代码块是只要写了就会执行,且不能传入参数;而构造函数在创建对象的时候N个选一个调用,且可以传入参数。

2、方法代码块

七、变量

1、成员变量(field):在类中定义的变量,创建对象时自动初始化。

2、局部变量(LocalVariable):在方法中定义的变量,不会被自动初始化。

3、同名问题:在同一个作用域中成员变量之间不可以重名,局部变量之间也不能重名。但是成员变量和局部变量之间可以重名,他们互相不冲突。

4、访问问题:就近原则。当局部变量和成员变量重名时,如果用变量名直接访

问,则先找局部变量,局部变量没有时才找成员变量。如果不想访问局部变

量直接访问成员变量,应该用:this.变量名。

八、this关键字

1、在构造函数中使用

(1)在构造函数的第一条语句调用该类的其他构造函数:this(参数列表);

(2)调用当前对象的成员:this.成员名。

2、在普通函数中使用

代表调用当前函数的对象。谁调用该方法,this就代表哪个对象。

3、内部类中使用

九、static关键字

  只能在类的级别下使用,不能在方法中定义静态变量。

只能修饰类的成员(变量、方法、代码块、内部类),不能修饰构造函数。

1、静态变量:

(1)概念

静态变量被类的所有对象所共享,只有一个。类加载后就被初始化为默认值。既可以通过“对象名.变量名”访问,也可以通过“类名.变量名”访问,但是java推荐用类名直接访问,效率较高。

(2)应用情景

   在定义类的时候,如果希望所有的对象共享一个变量的时候可以使用static关键字。

   举例:车站卖票系统中票的张数。

2、静态方法

(1)概念:用static修饰的方法,在类加载后可以用“类名.方法名()”调用。

(2)特点

a. 静态方法不能访问外部的非静态成员变量和方法。

b. 静态方法中不能使用this关键字。

(3)应用情景

如果一个方法中没有访问外部任何非静态成员,就可以定义为静态的。

3、静态代码块

(1)概念

    用static修饰的成员代码块。

    类加载后直接运行,只能运行一次,因为类只加载一次。

(2)应用情景

    定义类的时候,如果希望一段代码在别人使用这个类的时候就执行,就可

以将其定义在静态代码块中。

十、final关键字

1、final修饰的类,不能被继承。

2、final修饰的方法,不能被重写。

3、final修饰的变量,只能赋值一次(相当于常量);如:final int x ; x = 10;

  final修饰的成员变量,第一次赋值是在创建对象的时候,因此不能在成员方法中重新赋值,一般会再定义时指定一个值。如:classA{ final int i = 10;}

  final修饰的形参变量,第一次赋值是在调用函数传入实参的时候,因此不能在方法体中重新赋值。

  public static final X = 100;——全局变量,只能在定义变量的时候赋值。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值