面向对象编程(Object-Oriented Programming,OOP)
以类的方式组织代码,以对象的形式封装数据 以类的方式组织代码,以对象的形式封装数据 以类的方式组织代码,以对象的形式封装数据
物以类聚, 分类 的思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考。
最后,才对某个分类下的细节进行面向过程的思索。
适合处理复杂的问题,适合处理需要多人协作的问题
对于描述复杂的事物,为了从宏观上把握、从整体上合理分析,我们需要使用面向对象的思路来分析整个系统。但是,具体到微观操作,仍然需要面向过程的思路去处理。
类是一种抽象的数据类型,它是对某一类事物整体描述/定义,但是并不能代表某一个具体的事物。
如:动物、植物、手机、电脑等等
对象是抽象概念的具体实例
张三就是一个具体的人,张三家的旺财就是动物的一个具体实例。
能够体现出特点,展现出功能的是具体的实例,而不是一个抽象的概念。
对象是根据类创建的。在Java中,使用关键字 new 来创建一个新的对象。创建对象需要以下三步:
public class Application { public static void main(String[] args) { // 类:抽象的模板 Student类 // 对象:具体的个体 小明 Student xiaoMing = new Student(); xiaoMing.name = "小明"; xiaoMing.age = 18; xiaoMing.study(); // 实例化得到 小红 对象 Student xiaoHong = new Student(); xiaoHong.name = "小红"; xiaoHong.age = 18; xiaoHong.study(); } } class Student { // 属性:字段 String name; int age; // 方法 public void study(){ System.out.println(this.name+"在学习"); } }
构造器也称构造方法,每个类都有构造方法。
如果没有显式地为类定义构造方法,Java编译器将会为该类提供一个默认构造方法。
在创建一个对象的时候,至少要调用一个构造方法。构造方法的名称必须与类同名,一个类可以有多个构造方法。
下面是一个构造方法示例:
默认构造器
public class Application { public static void main(String[] args) { // 类:抽象的模板 Student // 对象:具体的个体 小明 Student xiaoMing = new Student(); } } class Student {}
public class Application { public Application() { } public static void main(String[] args) { new Student(); } }
class Student { Student() { } }
可以看到如果在java代码中没有显式定义构造方法,编译器将每个类编译成对应的class文件时,添加了一个无参构造器。
public class Application { public static void main(String[] args) { // 一旦自己定义了构造器,原始的默认构造器就失效了,需要自己显式定义。 // Student xiaoMing = new Student(); //报错 Student xiaoMing = new Student("xiaoMing"); System.out.println(xiaoMing.name); } } class Student { public String name; public Student(String name) { this.name = name; } }
class Student { public String name; public Student(String name) { this.name = name; } }
在class文件中原来的无参构造器不见了。
IDEA快捷键 Alt + Insert 快速创建构造器
类与对象
类是一个模板:抽象
对象是一个具体的实例
方法的定义和调用!
对象的引用
引用类型--基本类型(8)
对象都是通过引用来操作的:栈-->堆
属性:字段Field 成员变量
默认初始化
修饰符 属性类型 属性名 = 属性值;
对象的创建和使用
必须使用new关键字创建对象,构造器
Person person = new Person();
对象的属性 person.name
对象的方法 person.sleep()
类: