Java学习笔记07

Java学习——Java面向对象01(面向对象基础)


一、面向对象思想

设计一个计算机程序,通常是根据问题解决的步骤,将程序组织为一系列的线性代码或函数,然后依次调用或者访问。
而面向对象程序设计(Object Oriented Programming , OOP)语言则是从另一个角度看待计算机程序,它的核心是引入了对象的概念,使之可以逼真的模拟现实世界的任何事物,从而达到与人类的思维习惯相一致。
面向对象的概念和应用已超越了程序设计和软件开发,是一种对现 实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。 面向对象是相对于面向过程来讲的,指的是把相关的数据和方法组织为一个整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式。

面向过程与面向对象相比较

面向过程:就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。
在这里插入图片描述

面向对象:是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个事物在整个解决问题的步骤中的行为。
在这里插入图片描述
面向过程到面向对象思想层面的转变: 面向过程关注的是执行的过程,面向对象关注的是具备功能的对象。 面向过程到面向对象,是程序员思想上 从执行者到指挥者的转变。

二、面向对象三个基本特性

面向对象思想有三个基本特性:封装性、继承性和多态性。

(1). 封装性

封装就是隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别,将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。

面向对象的封装与真实世界的意图是一样的。封装能够使外部访问者不能随意存取对象的内部数据,隐藏了对象的内部细节,只保留有限的对外接口。外部访问者不用关心对象的内部细节,使得操作对象变得简单。

封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口,以特定的访问权限来使用类的成员。

优点
  • 保护类中的信息,它可以阻止在外部定义的代码随意访问内部代码和数据。

  • 隐藏细节信息,一些不需要程序员修改和使用的信息,比如取款机中的键盘,用户只需要知道按哪个键实现什么操作就可以,至于它内部是如何运行的,用户不需要知道。

  • 有助于建立各个系统之间的松耦合关系,提高系统的独立性。当一个系统的实现方式发生变化时,只要它的接口不变,就不会影响其他系统的使用。

  • 提高软件的复用率,降低成本。每个系统都是一个相对独立的整体,可以在不同的环境中得到使用。


(2). 继承性

继承是指一个新的类继承原有类的基本特征,并可增加新的特征。
原有的类称为父类或基类,新的类称为之类或派生类。在子类中不仅包含父类的所有数据和方法,还可增加新的属性和方法。继承具有传递性。
根据类的继承机制,在父类中值定义各子类的共同需要的属性和方法。类派生时,可以增加新的属性和方法。因此,父类的基本特征可别子类对象共享,提高子类的重复利用率。
Java 只支持单继承。

例如,如果定义两个老师类,不采用继承方式:
在这里插入图片描述
我么年间老师类相同的属性方法提取出来,采用继承方式:
在这里插入图片描述
使用这种层次形的分类方式,是为了将多个类的通用属性和方法提取出来,放在它们的父类中,然后只需要在子类中各自定义自己独有的属性和方法,并以继承的形式在父类中获取它们的通用属性和方法即可。


(3). 多态性

面向对象的多态性,即“一个接口,多个方法”。多态性体现在父类中定义的属性和方法被子类继承后,可以具有不同的属性或表现方式。多态性允许一个接口被多个同类使用,弥补了单继承的不足。

例:
在这里插入图片描述


三、类与对象

类表示一个共性的产物,是一个综合的特征,而对象,是一个个性的产物,是一个个体的特征。
类必须通过对象才可以使用,对象的所有操作都在类中定义。 类由属性和方法组成:

  • 属性:就相当于人的一个个的特征
  • 方法:就相当于人的一个个的行为

(1). 类的定义格式

class 类名称{
成员属性 
成员方法
 }

(2). 属性与方法

属性定义格式: 
数据类型 属性名; 

属性定义并赋值的格式: 
数据类型 属性名 = 初始化值; 

方法定义格式: 
权限修饰符 返回值类型 方法名(形式参数列表){ 
//方法体 
return 返回值;
 }

(3). 对象的创建与使用

一个类要想真正的进行操作,则必须依靠对象,对象的定义格式如下: 
类名称 对象名称 = new 类名称() ; 

如果要想访问类中的属性或方法(方法的定义),则可以依靠以下的语法形式: 
访问类中的属性: 对象.属性 ; 
调用类中的方法: 对象.方法(实际参数列表) ;

举个例子,定义一个Car类:

public class Car {
	//类的属性
	private String brand;//汽车品牌
	private String color;//汽车颜色


	public void show() {
		System.out.println("汽车品牌为:" + brand + "\n汽车颜色为:" + color);
	}
}

在CarTest类中建立一个对象使用它:

import  ...;(导入Car类所在位置)

public class CarTest {

	public static void main(String[] args) {
		Car car = new Car(); //定义一个Car类对象
		car.show(); //调用Car类方法
	}
}

(4). 构造方法(构造器)

Car car = new Car();

在右侧Car后面出现的小括号, 其实就是在调用构造方法 !

作用:用于对象初始化。

执行时机: 在创建对象时,自动调用

特点:所有的Java类中都会至少存在一个构造方法 如果一个类中没有明确的编写构造方法, 则编译器会自动生成一个无参的构造方法, 构造方法中没有任何的代码!

如果自行编写了任意一个构造器, 则编译器不会再自动生成无参的构造方法。

定义的格式:
与普通方法基本相同, 区别在于:
方法名称必须与类名相同, 没有返回值类型的声明 !

例:

public class Car {
	//类的属性
	private String brand;//汽车品牌
	private String color;//汽车颜色
	
	//无参构造方法
	public Car() {}
	
	//全参构造方法(重载构造方法)
	public Car(String a,String b) {
		brand = a;
		color = b;
	}

	public void show() {
		System.out.println("汽车品牌为:" + brand + "\n汽车颜色为:" + color);
	}
}

建议自定义无参构造方法,不要对编译器形成依赖,避免错误发生。 当类中有非常量成员变量时,建议提供两个版本的构造方法,一个是无参构造方法,一个是全属性做参数的构造方法。 当类中所有成员变量都是常量或者没有成员变量时,建议不提供任何版本的构造。

(4). 重载方法

定义: 方法名称相同, 参数类型或参数长度不同, 可以完成方法的重载 ! 方法的重载与返回值无关! 方法的重载 ,可以让我们在不同的需求下, 通过传递不同的参数调用方法来完成具体的功能。

构造方法的重载:

一个类, 可以存在多个构造方法 :
参数列表的长度或类型不同即可完成构造方法的重载。
构造方法的重载 ,可以让我们在不同的创建对象的需求下, 调用不同的方法来完成对象的初始化!

参考上面的例子。

有参考:http://c.biancheng.net/view/939.html

总结

开始接触面向对象方法的基础,重点三个特征,准备进阶!!!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值