面向对象编程1

  • 两种编程思维方式(步骤与零部件的关系)

用步骤将各零件制作或组装起来。

用步骤完成事物。

用零件组装事物。

面向过程。线性思考,按步骤进行,易于完成简单事物,是微观(具体)操作的组成部分。

面向对象。将整体(复杂事物)拆分成具体的零部件,逐个击破,以便提高效率。

共同点:

面向过程和面向对象都是解决实际问题的一种思维方式。二者相辅相成,并不是对立的。

解决复杂问题,通过面向对象的方式便于我们从宏观上把握事物之间复杂的关系,方便我们分析整个系统;具体到微观操作,仍然使用面向过程的方式来解决。

例:如何开车

面向过程(HOW):1.踩离合2.挂挡3.踩油门,放离合4.开了

面向过程(WHAT):驾驶员,汽车,驾驶员汽车(处理对象之间的关系)

一个是需要干什么来完成,一个是需要什么来实现。

一个是按具体步骤为基础,一个是按对象(个体事物)为基础。

如果不能确定步骤间的关系可以使用面向对象的方法。例如造车是先造发动机还是先造车轮,用面向对象就是组装流水线的问题,零部件先造哪个无所谓,造不出来的可以外包出去。

总之,很复杂的事物不能用面向过程解决,因为变量(需要确定的关系)实在是太多了。

可以翻翻近代史了解一下中国又一次的统一历程。

  • 类与对象(归类与个体)

对象:是具体的事物

类:是对具体事物的抽象

是对对象的抽象(抽象 抽出象的部分)

       现实生活中先有对象再有类,类是人类所发明的概念,人们可以通过比较归类来了解其他未知的事物。比如人们可以通过带翅膀,女孩,与善良等特征来判断他们所想的事物是否属于天使类。总之,类具有对象模具的作用,可以生成对象。

在Java中规定在class中用new关键字来实例化对象。所以我们暂时认为在Java中先有类再有对象。

对象和类的关系:特殊到一般,具体到抽象。类,我们叫做class,对象,我们叫做Object,instancee(实例)。以后,我们说某个类的对象,某个类的实例都是一个意思。类可以看成一类对象的模板,对象可以看成该类的一个具体实例。类是用于描述同一类型的对象的一个抽象的概念,类中定义了这一类对象所用具有的静态和动态属性。对象是Java程序的核心,在Java程序中“万事万物皆对象”。JDK提供了很多类供编程人员使用,编程人员也可以定义自己的类。

  • 对象的特征——属性与方法

属性:对象(可以)拥有的各种特征

每个对象的每个属性都拥有特定值。例如张浩和李明的年龄不一样。

方法:对象(可以)执行的各种操作

对象:用来描述客观事物的一个实体,由一组属性和方法构成。

例:购物

背景:购物过程中有顾客和收银员两种角色。

顾客                       收银员

姓名——张浩               员工号——10001

年龄——20                 姓名——李明

体重——60kg               部门——财务部

操作:                     操作:

购买品                     收款

                           打印账单

上半部分如“姓名——张浩”“年龄——20”“体重——60kg”或者“员工号--xxxxx”“姓名--xx”“部门--xxx”等这些标签特征与内容统称为属性,其中标签特征对应的内容则为它们的(属性)值。下半部分的操作行为叫做方法对象能做出的各种行为

  • 类的属性与方法

类:具有相同属性和方法的一组对象的集合。不同于int类型:具有方法

类是模子,确定对象将会拥有的特征(属性)和行为(方法)

类的属性

field(字段),或者叫成员变量

属性作用于定义该类或该类对象宝had数据或者说静态属性。

属性作用范围是整个类体

在定义成员变量时可以对其初始化(赋值),如果不对其初始化,Java使用默认的值对其初始化。(数值:0.00 char:\u0000,boolen:false,所有引用类型:null)

       属性定义格式:

              [修饰符] 属性类型 属性名 = [默认值]

              修饰符:可以是public,protected,private,static,final。讲到隐藏和封装时再说。

              属性类型:可以是任何类型,基本类型和引用类型

              属性名:含法标识符即可。首字母小写,驼峰原则。

类的方法

       面向对象中,整个程序的基本单位是类,方法是从属于对象的

       方法定义格式:

       [修饰符] 方法返回值类型 方法名(形参列表){

              //n条语句

}

JAVA中方法参数传递是:值传递

  • Java是面向对象的语言

所有Java程序都以类class为组织单元

关键字class定义自定义的数据类型

public class HelloWorld {

       public static void main(String[] args){

              System.out.println(“Hello World!!!”);

}

}

  • Java类模板

类将现实世界中的概念模拟到计算机程序中

Public class 类名 {

       //定义属性部分

       属性1的类型 属性1;

       属性2的类型 属性2;

              …

       属性n的类型 属性n;

       //定义方法的部分

       方法1;

       方法2;

              …

       方法m;

}

定义一个类的步骤:

  1. 定义类名
  2. 编写类的属性(成员变量)
  3. 编写类的方法

class Person

{

       String name;//姓名

       int age;//年龄

       String sex;//性别

       //自我介绍的方法

       public void introduce(){

System.out.println(“name=”+name+”\tage=”+age+”\tsex=”+sex);

}

}

创建对象

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

       Person person = new Person();

引用对象成员:使用“.”进行以下操作

       引用类的属性:对象名.属性

       引用类的方法:对象名.方法名()

       person.name = “王一一”;//给name属性赋值

       person.introduce();      //调用introduce()方法

       创建“王一一”这个对象

       public class IntialPerson

       {

              public static void main(String[]args)

              {

              Persion persion=new Persion();//创建对象

              System.out.println(“***初始化变量前***”);

              persion.introduce();//调用自我介绍的方法

              persion.name=”王一一”;//给属性复制

              person.age=20;

              person.gender=”男”;

              System.out.println(“\n***初始变量后***”);

              person.introduce();//调用自我介绍的方法

}

}

  • 局部变量与成员变量

区别

声明位置不同  方法中       类中方法外

作用范围不同  当前方法       当前类的方法

不同的方法中即使有同名的局部变量,没有关系,互不影响,建议相同

内存存放的位置 堆内存中     栈内存中

局部变量没有默认值,局部变量有默认值

  • 引用类型

Java语言中除基本类型之外的变量类型都称之为引用类型

Java中的对象和数组是通过引用对其操作的

       引用可以理解为一种受限的指针

       指针是可以进行不整数做加减运算的,两个指针之间也可以进行大小比较运算和相减运算。引用不行,另能进行赋值运算。

       引用就是一个变量或对对象的别名(引用的本质是一个对象);指针是一个段内存空间的地址(指向存储一个变量值的空间或一个对象的空间)

  • 内存分析

栈:

存放:局部变量

先进后出,自下而上存储

方法执行完毕,自动释放空间

堆:

存放new出来的对象

需要垃圾回收器来回收:System.gc()

方法区:

存放:类的信息(代码)、static变量、字符串常量等

  • 构造方法(构造器)

构造器的定义: constructor构造方法

一个在创建对象时被自动调用的特殊方法。

构造器的作用:

为对象进行初始化(成员变量)工作。

构造器是一种特殊的方法:

构造器的方法名必须与类名一致

构造器不能定义返回类型(返回值的类型肯定是本类),不能在构造器里调用return。

通过new关键字调用!!

若我们没有定义构造器,系统会自动定义一个无参的构造方法,如果定义则编译器不会添加无参构造方法

构造方法可以重载

十一.方法重载:

在一个类中定义一个或多个同名的方法

方法名相同,参数列表不同,与返回值、访问修饰符无关

参数列表不同体现在以下三个特征之一:

参数个数

参数类型

参数顺序

十二.方法调用

       形参和实参

定义方法的参数是形式参数

调用方法的参数是实在参数

调用方法时要求参数个数相同,类型兼容,顺序一致

参数传递

基本数据类型的参数传递:

无法通过方法调用改变变量的值

引用数据类型的参数传递:

可以通过方法调用改变变量的值

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值