文章目录
Java——面向对象(上)
一、面向对象和面向过程
面向对象和面向过程都是一种编程思想 基于不同的思想会产生不同的程序设计方法。
面向过程: 以过程,步骤为主,考虑怎么做,程序员是具体执行者
面向对象: 以对象(谁)为主,考虑谁来做,谁能做,程序员是指挥者
二、类和对象
1. 类和对象的理解
什么是类?
类: 是一类具有相同特征的事物的抽象描述,是一组相同
属性
和行为
的对象的集合。什么是对象?
对象: 是一个具有特定属性
和行为
的具体事物。类和对象的关系
- 类是对一类事物的描述,是 抽象的。
- 对象是一类事物的实例,是 具体的。
- 类是对象的模板,对象是类的实体。
- 电脑举例:
类: 主板、CPU、内存、电源、显卡、显示器 等硬件组成了电脑,电脑是多种硬件组成的描述, 是抽象的。就可以认为电脑是类, 是对相同特征的事物抽象描述的
对象: 苹果电脑,联想电脑,华硕电脑 就是这个电脑的具体实现,是看得见摸得着的,而不是概念。就可以说他们是类的实例
2. 类的定义
Java中用 class 关键字定义一个类,类包含
属性
和方法
// 定义一个人类
public class Student{
// 属性
String name; // 姓名
int age; // 年龄
char sex; // 性别
// 方法
public void study(){
System.out.println("学生在学习");
}
public void eat(){
System.out.println("学生在吃饭");
}
}
3. 对象的使用
类是对象的
模板
,所以通过类创建这个类的对象,或者说创建这个类的一个实例,这个过程称为类的实例化
创建对象语法格式:
类名 对象名= new 类名 ();
//创建学生对象 Student student = new Student();
使用对象的属性和方法,使用
.
操作:使用对象的属性:对象名.属性
使用对象的方法:对象名.方法名()student.name = "ZF"; student.age = 18; System.out.println(student.name); System.out.println(student.age); student.study(); student.eat();
三、包(Package)
包的作用
可以避免类重名:有了包之后,类的全名称就变为:包
.
类名分类组织管理众多的类
可以控制配合
访问修饰符
控制成员的可见范围
语法格式
- 必须在源文件的代码首行, 包名全部小写
- 一般使用公司域名倒写:
com.公司域名.项目名.模块名
package com.公司域名.项目名.模块名;
如何跨包使用类
前提:被使用的类或成员的权限修饰符是 > 缺省的,即可见的
(1)使用类的全名称
java.util.Scanner input = new java.util.Scanner(System.in);
(2)使用import 语句,代码中使用简名称即可
import 包.类名; import 包.*; // 导入包下的所有类
注意
使用
java.lang
包下的类,不需要import
语句,就直接可以使用简名称
四、局部变量和成员变量
成员变量就是类中的属性, 用来描述一个对象的特征
- 局部变量: 定义在方法体内或其他局部区域内的变量,没有初始值和访问修饰符。
- 成员变量: 定义在类内,方法体外,与方法平行的位置。有默认初始值和访问修饰符。
成员变量 | 局部变量 | |
---|---|---|
声明的位置 | 直接声明在类的成员位置 | 声明在方法体中或其他局部区域内(方法声明上,构造方法,代码块等) |
修饰符 | public、private、final等 | 不能使用访问权限修饰符,可以使用final |
内存加载位置 | 堆 | 栈 |
初始化值 | 有默认初始化值 | 无默认初始化值 |
生命周期 | 同对象的生命周期 | 随着方法的调用而存在,方法调用完毕即消失 |
五、方法(Method)
方法的概念
方法也叫函数,把相同的功能封装成方法,可以实现代码重用,从而简少代码量。成员方法
成员方法也叫实例方法: 通过创建对象, 使用
对象
.方法名
的方式调用Scanner input = new Scanner(System.in); // 创建对象 input.next(); // 使用对象的方法
六、方法重载(Overload)
方法重载: 同一个类中(本类声明的或继承自父类的)的方法,方法名相同,参数列表不同的情况,这就叫方法重载。
参数列表不同: 指的是参数个数不同,数据类型不同,数据类型顺序不同。
七、可变形参
在JDK1.5之后, 如果我们定义一个方法时,此时某个形参的类型可以确定,但是形参的个数不确定,那么我们可以使用可变参数。
格式:
// 可变参数写法
public int getSum(int... arr) {
int sum = 0;
for (int i = 0; i < arr.length; i++) {
sum += arr[i];
}
return sum;
}
注意:
(1)一个方法最多只能有一个可变参数
(2)如果一个方法包含可变参数,那么可变参数必须是形参列表的最后一个