面向对象--1

● 面向过程和面向对象的设计思想

面向过程是一种语言设计思想 代表语言:C

解决问题的思路就是一步一步的实现:

  • 例:把大象装进冰箱

1.函数1();开冰箱门

2.函数2();装大象

3.函数3();关冰箱门

现在多数编程语言,都引入了面向对象

java,c++,c#,python······

这么多的编程语言,都引入了面向对象这一思想,肯定是有优点的。

面向对象是另一种语言设计思想

object oriented programming 缩写OOP面向对象的编程语言

面向对象是以分类的思想来解决问题:

先分类:

创建一个冰箱类:

定义冰箱相关的一系列功能

名字;

制冷;

开门;

关门;

创建一个大象类:

同样定义大象的一系列功能

···

···

以后只要用到与冰箱相关的操作,直接找冰箱这个类即可

不止于解决一个问题,而是一类问题;

面向对象,类设计时,有继承语法,例,大象类扩展,创建一个动物类,动物类与大象类具有共同的功能,定义在动物类中,大象类继承动物类即可,扩展性,灵活性更高;

面向对象是宏观的设计把控,在具体到如何实现某个细节时,仍然采用面向过程的思维方式。

● java类

类是一个模板,描述一类事物的属性和行为的集合(对某一类事物进行抽象的定义),表示一个客观世界某类群体的一些基本特征抽象.例:

通过观察,发现有四个轮子,会跑--->概念 汽车类

先在这个类中定义一些功能,最终成为一个模板。

类的结构:

成员变量:事物属性的描述;

方法:事物的行为;(可以做的事情)

构造方法:初始化对象;

内部类:即在类体中声明的类.

代码块:一段没有名称的代码块

创建类

● Java类的定义

public [其他修饰符 final abstract] class(修饰这个类) Car(类名){

//直接在类{}中定义的内容,称为类的成员

String name;// 成员变量,类的属性 名词

String color;

int price;

//汽车类共有的特征

// 成员方法,类的行为(做什么) 动词

public void run(){

System.out.println("怎么怎么");

}

······

}

第一步:发现类

第二步:发现类的共有属性(成员变量)

第三步:发现类的方法

分析问题时,是宏观的.

具体写代码,具体到语法.

类只是对同一类事物进行的定义,是抽象的概念,不能直接使用

成员变量是定义在类中,方法体之外的变量。

成员变量可以使用Java语言中任何一种数据类型(包括基本类型和引用类型)。

在定义成员变量时可以对其初始化,如果不对其初始化,Java使用默认的值对其初始化。

成员变量在创建对象的时候会从类中复制一份到对象中。

成员变量可以被类中方法、构造方法和特定类的语句块访问。

成员变量的作用范围为整个类体。

● java对象

什么是对象

对象:对象是类的一个实例,是以类为模板在内存中创建的"实际存在"的"实例"

比如说:类可以看做汽车图纸,对象就是实际存在的一个汽车,有类中定义的功能,可以直接被使用.

"万事万物结尾对象"

● 对象的创建和使用

//以Car类为模板,在内存中创建出一个具体存在的对象

//new(关键字) 类的构造方法(名字与类名相同)

Car bm 声明了一个Car类型的变量

= 表示 把内存中实际存在的对象与声明的变量关联起来(对这个变量操作就相当于对这个对象进行操作)

Car bm = new Car();//在内存中开辟一块空间,存储对象

将右边创建的对象地址赋给左边的bm变量

bm.name =" 宝马";

······

bm.run();

······

用同样的方法再次创建变量bc

······

在定义成员变量时可以对其初始化,如果不对其初始化,Java使用默认的值对其初始化。

成员变量在创建对象的时候会从类中'复制'一份到对象中。(由抽象到具体)

两个变量互相独立,互不影响;

同一类的每个对象有不同的成员变量存储空间。

同一类的每个对象共享该类的方法。

类是同一类事物的抽象.

对象是类的实例.

● 构造方法

变量分类

按照位置变量分为:

成员变量:

定义在类中,方法体之外;

可以使用Java中任何一种数据类型(基本类型和引用类型);定义成员变量时可以对其初始化,如果不对其初始化,Java使用默认值对其初始化;

创建对象时会从类中复制一份到对象中;

可以被方法、构造方法以及特定的语句块访问;

作用范围为整个类;

局部变量:

在方法(成员方法)、构造方法或者语句块中定义的变量;

同样可以使用Java中任何一种数据类型;

使用前必须进行初始化;

声明和初始化都在方法、代码块中;

生命周期:什么时候生(方法被调用),什么时候销毁(方法结束后);

方法的形参,也属于局部变量;

类中定义的方法:

成员方法:定义在类中

public static() 通过类名调用

非静态 通过对象调用

public 修饰符 返回值类型、void 方法名(参数类型 参数名){

方法体语句;

return 返回值;

}

构造方法:

是什么:用来初始化对象的方法

构造方法名字与类名相同,且没有返回值,不需要void修饰;

如果用void修饰就变为一个普通的成员方法了

类中默认有一个无参的构造方法,在默认的无参构造方法中为成员变量初始化赋默认值.

一个类中可以定义多个构造方法(可以同名,参数不同),但是只要在一个Java类中定义了一个构造方法后,默认的无参构造方法即失效.

类中出现了多个名称相同的方法这一特征,称为方法重载

作用是什么:在构造方法中为创建的对象初始化赋值

● 方法的重载

是什么:方法的重载是指同一个类中具有相同的名字,但参数不同的多个方法

类中出现多个名称相同的方法这一特征 ,称为方法重载.

调用方法时如何区分这些名称相同的方法?

可以通过参数的个数,类型,顺序来区分调用的是哪种方法

调用时,会根据不同的参数选择表选择对应的方法

方法重载跟方法的返回值类型没有任何关系

一个类中可以定义多个构造方法(可以同名,参数不同),但是只要在一个Java类中定义了一个构造方法后,默认的无参构造方法即失效.如果仍要调用默认的无参构造方法,就必须将无参构造方法定义出来.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值