1.面向对象的概述
a) 面向对象概念
面向对象是java的基本特征。深刻的理解面向对象是设计良好java软件项目的基础。
面向对象(Object Oriented, OO)是软件开发过程中使用的一种思维方式。将功能封装进对象,强调了具备功能的对象,不关注过程。
如:
我们要吃饭时,自己做饭就是面向过程的思维方式。
我们要吃饭时,思考的是去调用饭店提供饭的功能,不需要关注过程,不需要详细的解决问题是面向对象的思维过程。
b) 面向对象特点
是一种更适合人们思考习惯的思想
可以将复杂的事情简单化
将程序有执行者转换为指挥者
c) 面向对象特性
封装
继承
多态
2.类与对象
a) 类的基本概念
类是具有相同特征(属性)和行为(特征)的一类事物的抽象我们将现实事物的特征抽象为类中的成员变量,现实事物的行为功能抽象为类中的成员方法。
注意:实际上所属关系是直接属于类的均称为成员,如成员变量、成员方法、后边学习的成员内部类,并不单指成员变量。
a) 类的定义格式
类在Java中代码的体现形式:
使用class(类)来抽象一个现实生活中的事物
定义成员变量对应事物的属性,一般使用private修饰,提供get/set方法
定义成员方法对应事物的功能,一般使用public修饰
定义格式:
publicclass 类名{
private 数据类型变量名1;
private 数据类型变量名2;
…其他成员变量
public 返回值类型方法名(参数类型参数名,参数类型参数名2…) {
方法体;
}
每个属性对应的get/set方法,使用this区分成员变量与局部变量
}
如:人类
public class Person {
private String name;
private int age;
public void eat(){
System.out.println(“吃了”);
}
public void setName(String name) {
this.name= name;
}
public String getName() {
return name;
}
public void setAge (int age) {
this.age= age;
}
public int getAge() {
return age;
}
a) 类的使用格式
类的使用非常简单,一般分为两个动作:创建对象与调用方法。
类的定义是现实事物的抽象,真正使用的是类创建的对象。通常使用对象来调用方法。
对象创建格式:
数据类型 对象名= new数据类型();
对象方法的调用:
无返回值:
对象名.方法名(参数);
有返回值:
返回值类型 变量名 =对象名.方法名(参数);
a) 成员变量
直接定义在类中的变量称为成员变量,在面向对象思想设计上,是类的组成部分。
成员变量通常使用private修饰,阻止本类以外的其他类访问。
成员变量不能重名,局部变量不能重名,成员与局部变量可以重名,但是需要使用this区分。
使用this访问的为成员变量,直接访问的为局部。在方法内访问变量,如果没有该名称的局部变量会自动查找是否有该名称的成员变量。
b) 成员方法
正常定义成员方法时,一般是不需要添加static修饰符的。static修饰符会在后边详细简介。
成员方法一般可分为两类
没有业务的属性get/set方法,与属性对应
有业务的普通方法,属于类的功能
c) 类与对象的关系
类是抽象概念,对象是类的具体实例。我们通常真正使用的是某个类的实例对象,进而调用该对象的方法。
一个类可以有多个对象,一个对象只属于一个类(在讲完多态后会有不同的理解)。
可以说创建对象并调用方法是类最主要的使用方式。
2.1 自定义类练习
在自定义类型基础上,我们可以将现实生活中的任何事物抽象成一个更为完整的类,请自定义并使用一种数据类型。如人类、动物类、汽车类、衣服类、玩具类等
2.2 对象的内存解释
对象在内存中的位置:
对象由new关键字创建,如同数组,实体存在于堆内存中
任何事物均可以定义成类,创建对象,属于引用类型。
而对象的引用变量是一个普通变量。存储的值是该对象堆内存中的地址。
2.3 封装概念
把数据和方法包装进类中,隐藏属性和具体的实现,常共同被称作是封装。
封装的结果是一个同时带有特征和行为的数据类型。
我们前边所完成的水果项类的定义就是封装的一部分。同样,成员变量与成员方法以及对应的private修饰,公共的get/set方法均为封装的一部分。
2.4 private关键字
private关键字是私有化修饰符,访问权限修饰符的一种,只有在本类中才能访问的成员,外界无法访问,是封装类中成员变量常用的修饰符。
private用于修饰成员,包括成员变量与成员方法。
2.5 this关键字
this一般出现在类的一个方法的定义当中,代表当前对象的引用。我们通常用其将本对象中的成员与其他作用域成员区分开来。
当一个类定义好之后,如果不创建对象this是没有意义的。
一个类可以有多个对象。每个对象都有各自的属性值,各个对象的方法均是类中定义的那个方法逻辑。定义中的this就代表调用方法的这个对象。