Java面向对象编程

一、面向对象编程初步

在这里插入图片描述
在这里插入图片描述
例如:如何开汽车(事物比较简单,可以用线性的思维去解决)

  • 面向过程:
  1. 踩离合
  2. 挂挡
  3. 踩油门,放离合
  4. 开了
  • 面向对象:
    驾驶员
    汽车
    驾驶员开汽车!
    car.start();

如何造汽车(事物比较复杂,使用简单的线性思维无法解决)

  • 面向过程:
  1. 造车轮?
  2. 造发动机?
  3. 造车皮?
  4. 挡风玻璃?

很难决定上面这些步骤之间的关系!先造发动机还是先造车轮?

  • 面向对象:
    车轮。。。
    发动机。。。
    车壳。。。
    座椅。。。
    挡风玻璃。。。

将上面造出的东西进行组装。

二、类和对象

现实世界是由对象组成的。

对象和类的概念

类可以生成对象,类是对象的抽象。

  • 对象:是具体的事物
  • 类:是对对象的抽象(抽象 抽出象的部分)
    先有具体的对象,然后抽象各个对象之间象的部分,归纳出类通过类再认识其他对象。

对象

属性
  • 属性—对象具有的各种特征
  • 每个对象的每个属性都拥有特定值

例如:小张和小李的年龄、姓名不一样
在这里插入图片描述

方法
  • 方法—对象执行的操作
    在这里插入图片描述
  • 对象:用来描述客观事物的一个实体,由一组属性和方法构成

在这里插入图片描述
类是具有相同属性和方法的一组对象的集合。
类是对象的类型,不同于int类型:具有方法。

属性
  • 属性field,或者叫成员变量。
  • 属性用于定义该类或该类对象包含的数据或者说静态属性。
  • 属性作用范围是整个类体
  • 在定义成员变量时可以对其初始化,如果不对其初始化,Java使用默认的值对其初始化。(数值:0,0.0 char:\u0000 boolean:false 所有引用类型:null)

属性定义格式:
在这里插入图片描述

方法

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

[修饰符] 方法返回值类型 方法名(形参列表){
	//n条语句
}

注意:java中方法参数传递是:值传递!!!

类和对象的关系

类是抽象的概念,仅仅是模板,比如说:“人”
对象是一个你能看得到、摸得着的具体实体
在这里插入图片描述

类和对象的总结

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

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、编写类的方法

类示例:
在这里插入图片描述

如何创建和使用对象

使用对象的步骤:

  • 创建对象
类名 对象名 = new 类名();
Person person = new Person();

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

  • 引用类的属性:对象名.属性
  • 引用类的方法:对象名.方法名()
person.name=""小李;  //给name属性赋值
person.introduce();  //调用introduce()方法

创建和使用对象示例:

public class InitialPerson{
	public static void main(String[] args){
		Person person = new Person();//创建对象
		person.name = "小李";//给属性赋值
		person.age = 22;
		person.sex = "男";
		person.introduce();//调用自我介绍的方法
	}
}

三、局部变量和成员变量

区别:

  • 声明位置不同: 类中 方法中
  • 作用范围不同:当前类的方法 当前方法
    不同的方法中即使有同名的局部变量,没有关系,互不影响,建议相同
  • 内存存放的位置不同:栈内存中 堆内存中
  • 成员变量有默认值;局部变量没有默认值

引用类型

Java语言中除基本数据类型之外的变量类型都称之为引用类型。
在这里插入图片描述
Java中的对象和数组是通过引用对其操作的。

  • 引用可以理解为一种受限的指针
  • 指针是可以进行与整数做加减运算的,两个指针之间也可以进行大小比较运算和相减运算。引用不行,只能进行赋值运算。
  • 引用就是一个变量或对象的别名(引用的本质是一个对象);指针是一个段内存空间的地址(指向存储一个变量值的空间或一个对象的空间)

内存分析

栈:

存放:局部变量
先进后出,自下而上存储
方法执行完毕,自动释放空间

堆:

存放new出来的对象
需要垃圾回收器来回收:System.gc()

方法区:

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

四、构造方法

  • 对象初始化
    在这里插入图片描述
  • 构造方法
    在这里插入图片描述

构造方法的重载

  • 自定义构造方法
    在这里插入图片描述
  • 构造方法重载的调用
    在这里插入图片描述

构造器

  • 构造器的定义:constructor构造方法
    一个在创建对象时被调用的特殊方法。
  • 构造器作用:为对象进行初始化(成员变量)工作。
  • 构造器是一种特殊的方法:
    1、构造器的方法名必须和类名一致!
    2、构造器虽然有返回值,但是不能定义返回类型(返回值的类型肯定是本类),不能在构造器里调用return。
    3、通过new关键字调用!!
    4、如果我们没有定义构造器,则系统会自动定义一个无参的构造方法。如果已定义则编译器不会添加无参数的构造方法!
    5、与普通方法一样,构造方法也可以重载。

五、方法调用

  • 形参和实参
    1、定义方法的参数是形式参数
    2、调用方法的参数是实在参数
    3、调用方法时要求参数个数相同,类型兼容
  • 参数传递
    1、基本数据类型的参数传递:无法通过方法调用改变变量的值。
    2、引用数据类型的参数传递:可以通过方法调用改变变量的值。
  • 23
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值