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

来源:互联网 发布:伊沃人工智能技术 编辑:程序博客网 时间:2024/05/11 14:35

黑马程序员——向对象

-----------android培训、java培训、java学习型技术博客、期待与您交流!------------

一、面向对象的概念

1.理解面向对象

面向对象是相对面向过程而言的,面向对象和面向过程都是一种思想:面向过程强调的是功能行为,面向对象是将功能封装进对象,强调具备了功能对象。面向对象是基于面向过程的。

简单举例:电脑坏了,拿到修理店修理。面向过程强调的是修理电脑,面向对象强调的是修理店。这里修理店就是一个对象,它具备修理电脑这个功能。我们只要找到这个对象,即使自己不会修电脑,也可以完成修理电脑这件事。面向对象让我们从执行者变成指挥者,使事情变得简单化。

面向对象的3个特征:封装,继承,多态

二、类与对象的关系

类:就是对现实生活中事物的描述

对象:就是这类事物,实实在在存在的个体。

现实生活中的对象:张三,李四

想要描述:提取对象中共性内容,对具体的抽象。描述时,这些对象的共性有:姓名,性别 ,年龄等功能。

映射到java中,描述就是class定义的类,具体对象就是对应java在对内存中用new建立的实体。

例如:

汽车设计图和汽车。可以理解为类就是图纸,汽车就是堆内存中的对象

描述汽车(颜色,轮胎数)描述事物就是在描述事物的属性和行为

属性对应的是类中的变量,行为对应的是类中的函数

其实定义类,就是描述事物,就是在定义属性和行为。属性和行为共同成为雷总的成员(成员变量)

class Car{

//描述颜色

String color=red;

//描述轮胎数

Int num=4;

//运行行为

Viod run(){

 

}

 

 }

 class carp{

Public static void main(String[] args){

//生产汽车,在java中通过new操作符来完成

//其实就是在堆内存产生一个实体

Car c=new Car;//c就是一个类类型的变量。类类型的变量指向对象

//将已有车的颜色改成蓝色,值会该对象做使用。在java指挥方式是:对象.对象成员

c.color=”blue”;

}

}

成员变量和局部变量

作用范围

成员变量作用于整个类中

局部变量作用于函数中,或者语句中

在内存中的位置:

成员变量在堆内存中,因为对象的存在,才在内存中存在。

局部变量:存在栈内存中

匿名对象的使用:

1.当对象的方法值调用一次是,可以用匿名对象来完成,这样写比较简化,如果对象进行多个成员调用,必须给这个对象起个名字

2.可以将匿名对象最为实际参数进行传递。

三、封装

封装:是值隐藏对象的属性和实现细节,进对外提供公共访问方式

好处:将变化隔离

       便于使用

  提高重用性

  提高安全性

封装原则:

  将不需要对外提供的内容都隐藏起来

  把属性都隐藏,提供公共方法对其访问

修饰符private:私有,权限修饰符,用于修饰类中的成员(成员变量,成员函数)。私有只在本类中有效。

class Person{

Private int age;

/*public void setAge(int a){

age=a;

}*/

void speak(){

System.out.println(age);

}

}

class PersonD{

public static void main(String[] args){

Person p=new Person();

p.age=20;//这里就不能编译成功,因为age已经被私有,不能被修改

//p.steAge(20);

}

age私有以后,类以外即使建立了对象也不能直接访问,但是人应该有年龄,就需要在Person类中提供对应访问age的方法。

注:私有仅仅是封装的变现形式。

之所以对外提供访问方式,是因为可以在访问方式中加入逻辑判断等语句。对访问的数据进行操作,提高代码的健壮性。

如:

Private int age;

public void setAge(int a){

Ifa<100&& a>0

age=a;

else

System.out.println(“no”);

 

四、构造函数

特点

1.函数名与类名相同

2.不用定义返回值类型

3.不可以写return语句

  作用:

给对象进行初始化

注意:

1.默认构造函数的特点

2.多个构造函数是以重载的形式存在。

 

对象一建立就会调用与之对应的构造函数。

class Person{

//Person(){}

Person{

Systemm.out.println(“person”);

}

}

构造函数的小细节:

当一个类中没有定义构造函数时,那么系统会默认给该类加入一个空参数的构造函数。

当在类中定义了构造函数后,默认的构造函数就没有了。

构造函数和一般函数在写法上有所不同。在运行上也有所不同。

构造函数是在对象一建立就运行,给对象初始化。

而一般方法是对象调用才执行,给对象添加对象具备的功能。

一个对象建立,构造函数值运行一次。而一般方法可以被该对象调用多次。

什么时候定义构造函数?

当分析事物时,该事物存在具备一些特性或者行为,那么将这些内容定义在构造函数中。

 

构造代码块

作用:给对象进行初始化。对象一建立就运行,而且优先于构造函数执行。

和构造函数的区别:

构造代码块是给所有对象就行初始化,而构造韩式是给对应对象初始化。

构造代码块中定义的是不同对象共性的初始化内容。

class Person{

{

Systemm.out.println(“person”);

}

Person{

Systemm.out.println(“person1”);

}

 

}

0 0