黑马程序员(二)面向对象思想

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

面向对象

(1)什么叫面向对象? 面向对象就是一种常见的程序结构设计方法。 面向对象思想的基础是将相关的    数据和方法放在一起,组合成一种新的复合数据类型, 然后使用新创建的复合   数据型 作为项目的基础。

(2)面向对象:是基于面向过程的一种思想。

     面向过程:强调的是功能行为,一种过程,先干啥,再干啥; 

     面向对象:将功能封装到对象里,强调的是具备某功能的对象;

(3)面向对象的思想特点:

A:是一种更符合人们思考习惯的思想。

B:把复杂的事情简单化了。

C:把我们从执行者变成了指挥者。举例:买手机取钱旅游

 我的总结: 面向过程:强调的是具体的功能实现;(执行者)

面向对象:强调的是具备功能的对象。(管理者)

类是Java 语言的最小编程单位,也是设计和实现Java 程序的基础


(1)类的概念:

类是一组事物共有特征和功能的描述。类是对于一组事物的总体描述,是按照面向对象技术进行设计时最小的单位,也是组成项目的最基本的模块。类的概念是抽象的,类似于建筑设计中的图纸,是对于现实需要代表的具体内容的抽象。类只包含框架结构,而不包含具体的数据。所以类代表的是总体,而不代表某个特定的个体。

 

  我的总结:类是抽象的,对象是具体的,实实在在的!

 

(2)类的定义:

[修饰符] class  类名{

      1~n个构造方法;

       0~n个字段;

       0~n个方法

}

  举例:

//定义一个学生类

class Student{

//成员变量 

private int age;

private String name;

//成员方法
public void show(){
System.out.println(name+age);
}
}

(3)类与对象的关系:

把事物转换成类:

A:成员变量定义在类中,方法外

B:成员方法和以前的区别是去掉static

类:是相关的属性和行为的集合。是一个抽象的概念。

对象:是某种事物的具体存在,具体的表现形式。

举例:学生      张三

(4)如何使用呢?

 A:创建对象格式:类名 对象名 = new 类名();

 B:使用成员变量和成员方法对象名.成员变量对象名.成员方法 

(5)类包含哪些东西?

变量:类或对象所包含的数据,对类状态的一种描述;

方法:类或对象的特征或行为

构造方法:用户创造该类的对象,还能给对象初始化

构造方法

构造方法:用来构造类的实例(每一个类都默认有一个无参的构造方法,得使用new调用)

(1)作用:

给类中的字段进行初始化,可以用来创建对象。

 

(2)特点:

方法名与类名相同

不用定义返回值类型

不需要写return语句

(3)构造方法的重载:(需要哪个就去适配哪个,调用哪个)

              this([实参]);调用当前类的构造方法

               注意: this([实参]);必须放在构造器的第一行;

(4)对象的产生格式:

类名称  对象名 = new  类名称();

因为有(),所以是方法,实际上它就是构造方法,并且是非私有的构造方法。

如:Student s= new Student()

我的总结:

系统默认会给每个类一个无参的构造函数;如果我们定义了构造函数,

系统将不会再给的构造函数多个构造方法是以重载的形式存在的。

 

static关键字 

(1)是一个关键字。可以修饰成员变量和成员方法。

(2)特点:

随着类的加载而加载

优先于对象存在

被所有对象所共享

可以直接被类名调用

(3)使用注意:

静态方法只能访问静态成员

但是非静态成员可以访问静态成员;

静态方法中不可以使用this,super关键字

主方法(main)是静态的(可以利用类名去调用静态的main方法,很正常!但是会陷入死循环,导致内存溢出,jvm自动停止!)

public staticvoid main(String[] agrs){}

 

(4)可修饰变量,方法。

用static 修饰的成员表示它属于这个类共有,而不是属于该类的单个实例。

没使用static修饰的变量和方法,成员属于类的单个实例,不属于类。

        

(5)类和实例访问变量和方法的格式:

访问类成员:       类名.变量      类名.方法

访问实例成员:    对象.变量        变量.方法

(6)什么时候该用static呢?


如果某个内容是所有对象共享的,就用静态修饰。


举例:
水杯和饮水机。
老师和学生。

 

我的总结:

  static修饰的字段和方法,既可以通过类调用,也可以使用实例调用

  static修饰的字段和方法,只能使用实例来调用

          static关键字不能与thissuper同时连用!

 

匿名对象

 

(1)匿名对象:一个没有名字的对象,  创建了一个对象出来,没有赋给一个变量;

(2)特点:

对方法或字段只进行一次调用时;

可作为实际参数进行传递;

只在堆里面开辟存储区域,

只能使用一次,  使用完就被销毁了;

何时使用?1、只拿来用一次!

   2:当做实际参数进行传递

new Person();表示匿名对象,没有名字的对象

new Person().name;使用一次之后就被销毁了


this关键字
(1)是一个关键字,代表当前类对象的引用。

除了静态方法外,所有的方法中有隐含的有一个this引用

(2)什么时候使用this关键字呢?

当局部变量名和成员变量名一样的时候,用this区分

构造函数内调用本类其他的构造函数,this必须写在第一行

(3)注意:

this不能用在static修饰的方法里和static修饰的代码块里;


我的总结:在方法中,哪个对象调用方法,this就代表该对象


代码块

定义:放在{}中的代码称为代码块

   分类:定义在方法中的为局部代码块,作用是让变量从内存中尽早消失

    定义在方法外的称为构造代码块,把所有构造方法中的共同内容放在构造代码块中,作用是给

    对象进行赋值


静态代码块

定义:用static修饰的代码块

什么时候运行?随着类的加载就运行,且只运行一次

静态代码块代码块和构造函数进的运行顺序是怎么样的?

通过下面代码的测试可以得出结果

黑马程序员(二)面向对象思想_第1张图片

我的总结:在调用构造函数创建对象的时候,运行顺序是 静态代码块>代码块>构造函数,如果该类有父类,构函数内还会通过super关键字调用父类的构造函数




 

 

你可能感兴趣的:(学习日志)