《面向对象基础》
目录
一、类与对象基础概念
面向对象(Object Oriented)是软件开发方法,一种编程范式。其概念和应用已超越了程序设计和软件开发,是一种对现实世界理解和抽象。其中类是一个抽象概念,而对象是一个具体概念。
类(class)是对象(object)的模板,而对象(object)是类的一个实例(instance)。
生活示例(万物皆对象)
- 示例一

- 示例二

二、Java类书写
案例一
- 行为特征分析

- 类书写
package com.hpr.test;
public class Cat {
//变量
String name;
int age;
String color;
double weight;
//方法
public void eat() {
System.out.println("猫咪正在吃饭...");
}
public void sleep() {
System.out.println("猫咪正在睡觉...");
}
public void speak(){
System.out.println("猫咪正在喵喵喵...");
}
}
- 对象创建测试
package com.hpr.test;
public class Test {
public static void main(String[] args) {
Cat cat = new Cat();
//属性调用
System.out.println(cat.name);
//方法调用
cat.speak();
}
}
执行结果

三、类元素解析
类主要组成元素
- 变量:全局变量(类变量/静态变量、实例变量/非静态变量)、局部变量;
- 方法:静态方法/类方法、非静态方法/实例方法、构造方法;
- 代码块:代码块、静态代码块。
案例二
- Dog类
package com.hpr.test;
public class Dog {
//全局变量-非静态变量
int age;
String food;
//全局变量-静态变量
static String type;
//非静态方法(实例方法)
public void eat(String food) {
System.out.println("狗子正在吃:" + food);
//this代指当前对象
System.out.println("狗子正在吃:" + this.food);
}
//静态方法(类方法)
public static void speak() {
//System.out.println(this.food); //此处报错,this不能用于静态内容中
System.out.println("一只" + type + "正在汪汪汪...");
}
//方法重载(overload)
public int add(int a, int b) {
return a + b;
}
public double add(double a, double b) {
return a + b;
}
public String add(String a, String b) {
return a + b;
}
//可变参数
public int add(int... item) {
int sum = 0;
for (int x : item) {
sum += x;
}
return sum;
}
}
- 测试类
package com.hpr.test;
public class Test {
public static void main(String[] args) {
...
Dog dog = new Dog();
System.out.println("-----------静态元素调用-----------");
Dog.type = "萨摩耶";
Dog.speak();
System.out.println("-----------非静态元素调用-----------");
dog.food = "骨头";
dog.eat("狗粮");
System.out.println("-----------重载方法调用-----------");
System.out.println(dog.add(3, 5));
System.out.println(dog.add(1.2, 3.4));
System.out.println(dog.add("Hello ", "World!"));
System.out.println("-----------可变参数-----------");
int sum = dog.add(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
System.out.println(sum);
}
}
执行结果

名词解析
-
全局变量(类直属的变量)
全局变量在声明后若没有赋值,将会默认一个初始化值(如上述案例中 cat.name 打印结果为 null),其规则如下(与数组一致)。
数据类型 默认初始化值 整型(byte/short/int/long ) false 小数型(float/double) 0 布尔型(boolean) 0.0 字符型(char) ‘\u0000’,即一个空格 类类型(class) null -
局部变量(定义在方法中的变量)
局部变量使用之前必须初始化,否则编译不通过(代码报红线)。
int a; //声明变量 a = 0; //初始化值 int b = 1; //变量声明同时赋值 -
静态/非静态
static修饰的元素(变量、方法、代码块)称之为静态元素,与非静态元素有以下区别:
- 静态变量/方法可通过类名直接调用;
- 非静态变量/方法必须创建对象后使用对象调用;
- 静态内容无法调用非静态内容。
-
this关键字
this代指当前对象,属对象创建过程产物,不能用于静态内容;同时当局部变量与全局变量冲突时,可通过this关键字调用全局变量。
-
方法
方法是封装固定逻辑的代码块,可重复调用,方法书写三要素:
- 参数传入:需要什么传什么;
- 逻辑处理:要处理的逻辑;
- 结果返回:需要什么返回什么(无需返回使用void)。
-
形参/实参
- 形参(形式参数):方法定义时书写的参数;
- 实参(实际参数):方法调用时传入的参数;
-
方法重载(overload)
同一个类中,存在方法名相同,但参数不同的多个方法,该类情况称之为方法重载(如数组Arrays工具类sort排序方法就使用了重载)。

-
可变参数
jdk1.5的产物,不确定参数数量,最终将其封装为一个数组。
四、构造方法
构造方法又称之为构造函数,方法名与类名一致,且无返回值,主要用做初始化对象前的数据准备工作(传入值——>赋给全局变量——>全局使用)。
案例三
生成构造:鼠标右键——>Generate...——>Constructor——>选择字段——>点击OK完成。
- Panda类
package com.hpr.test;
public class Panda {
String name;
int age;
String food;
//无参构造
public Panda() {
}
//带参构造
public Panda(String name, int age, String food) {
this.name = name;
this.age = age;
this.food = food;
}
public void introduce() {
System.out.println(age + "岁的熊猫宝宝" + name + "喜欢吃" + food);
}
}
- 测试类
package com.hpr.test;
public class Test {
public static void main(String[] args) {
System.out.println("-----------无参构造调用-----------");
Panda panda1 = new Panda();
panda1.name = "团团";
panda1.age = 2;
panda1.food = "竹叶";
panda1.introduce();
System.out.println("-----------带参构造调用-----------");
Panda panda2 = new Panda("圆圆", 3, "竹笋");
panda2.introduce();
}
}
执行结果

构造特点
- 当没有自定义构造时,系统会默认提供一个无参构造,当书写自定义构造后,默认无参构造将消失;
- 代码简洁,一行代码进行多变量赋值。
构造互调
构造之中是可以调用其它构造的,但必须放在该构造方法第一行,例如:
public class Panda {
...
public Panda() {
this("阿宝", 10, "面条");
}
public Panda(String name, int age, String food) {
this.name = name;
this.age = age;
this.food = food;
}
...
}
总结
重点
- 类与对象概念;
- 类书写及对象创建使用;
- 类元素概念及使用;
- 构造方法书写及使用。
难点
- 类元素概念及使用;
- 构造方法互调调用。
本文介绍了面向对象的基础概念,包括类与对象的关系,Java中类的书写,对象的创建,以及类的元素如变量、方法和构造方法的解析。示例展示了如何定义和使用Java类,包括静态和非静态元素的区别,方法重载以及构造方法的使用。文章还强调了构造方法在初始化对象时的作用。
2637

被折叠的 条评论
为什么被折叠?



