Java 对象和类
Java 对象和类初识面向对象对象的创建一、初识面向对象面向对象这个概念,可以和面向过程概念对比着来理解。面向过程思想:执行者角度,线性思维。步骤清晰简单,第一步,第二步……适合处理较为简单的问题。面向对象思想:指挥者角度,分类思维。解决问题时,首先思考的是将问题分类,把它们分配给不同的对象来完成。适合处理复杂的问题,适合处理需要多人协作的问题。两个概念的关系:面对复杂的事物时,我们首先需要使用面
Java 对象和类
-
初识面向对象
-
对象的创建
一、初识面向对象
面向对象这个概念,可以和面向过程概念对比着来理解。
-
面向过程思想:
-
执行者角度,线性思维。步骤清晰简单,第一步,第二步……
-
适合处理较为简单的问题。
-
-
面向对象思想:
- 指挥者角度,分类思维。解决问题时,首先思考的是将问题分类,把它们分配给不同的对象来完成。
- 适合处理复杂的问题,适合处理需要多人协作的问题。
-
两个概念的关系:
- 面对复杂的事物时,我们首先需要使用面向对象的思想,从宏观上分析整个系统。但具体到微观操作时,则仍然需要用面向过程的思路去处理。
- 面向对象和面向过程不是对立的,而是相辅相成的。面向对象离不开面向过程。
面向对象编程的本质就是:以类的方式组织代码,以对象的方式封装数据。
从代码运行角度而言,先有类,后有对象。类是对象的模板。
二、对象的创建
1. 类与对象的关系
-
类是一种抽象的数据类型,是对某一类事物的整体描述(定义),但是并不能代表一个具体的事物。
- 人、动物、植物、手机、电脑……
-
对象是抽象概念的具体实例。
- 张三就是人的一个具体实例,张三饲养的旺财就是狗的一个具体实例。
2.创建与初始化对象
首先,我们定义一个 Student
类 :
public class Student {
//属性
String name; //默认值:null
int age; //默认值:0
//方法
public void study(){
System.out.println(this.name+"在学习");
}
}
使用new关键字创建对象:
//一个项目应该只存在一个main方法
public class Application {
public static void main(String[] args) {
//类是抽象的,需要实例化
//类实例化后会返回一个自己的对象(new之后,Ctrl+Alt+V,或者 alt+enter 自动返回)
//student对象就是一个Student类的具体实例
//(我们可以将student改为xiaoming,xiaohong,等等,它们都是Student类的具体实例)
Student student = new Student();
}
}
使用new关键字创建对象的时候,除了分配空间之外,还会给创建好的对象进行默认的初始化以及对类中构造器的调用。
如下所示,我们创建一个新的对象,并输出它的属性值,可以得到该属性的默认值。
Student xiaoming = new Student();
System.out.println(xiaoming.name); //输出name值
System.out.println(xiaoming.age); //输出age值
运行结果如下:
null
0
我们通过下面的语句对其进行赋值,并输出赋值结果:
xiaoming.name = "小明";
xiaoming.age = 8;
System.out.println(xiaoming.name);
System.out.println(xiaoming.age);
运行结果如下:
小明
8
3.构造方法(构造器)
每个类都有构造方法,构造方法的规则如下:
-
定义:
- 构造器名称必须与类同名,一个类可以有多个构造方法。
- 构造器没有返回值。
-
作用:
- 使用new关键字,本质是在调用构造器。
- 构造器可以初始化类的对象,并返回对象的地址。
-
注意点:
- 若没有显式地为类定义构造方法,Java 编译器将会为该类提供一个默认构造器。(即定义在 .class 文件中)
- 构造器分为有参构造器和无参构造器,
.class
文件提供的默认构造器是无参的。 - 一旦定义了有参构造器,那么无参构造器就必须显式定义。
下面是两个构造方法实例,分别为无参构造和有参构造:
(IntelliJ IDEA 可以 Alt
+ Insert
自动生成构造器,具体参考这个链接:IDEA自动创建构造器 )
public class Person {
String name;
int age;
//无参构造器
public Person() {
}
//有参构造器
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
在main方法中调用构造方法:
//调用无参构造器
Person person = new Person();
System.out.println("无参构造器的name属性:"+person.name);
//调用有参构造器
Person xiaoming = new Person("xiaoming", 8);
System.out.println("有参构造器的name属性:"+xiaoming.name);
运行结果如下:
无参构造器的name属性:null
有参构造器的name属性:xiaoming
更多推荐
所有评论(0)