- 面向对象
对比面向过程与面向对象:
面向过程和面向对象都是编写应用程序的一种方法。
区别:
--------面向过程是一种以过程(方法)为最小颗粒度的编程语言。
一个方法一旦声明完成,这个方法的功能就不能改变了(面向过程语言,一个方法一旦编写完成,功能就固定了。想要一个不同功能的方法就只能新编写一个)。
--------面向对象是一种以过程中使用的对象为最小颗粒度额编程语言。
一个方法声明完成,会根据使用的对象不同,而改变这个方法的功能。
- 类和对象
关系: 类和对象之间的关系,必须是从现实世界向软件世界转换的过程。
创建类:
类是一种特殊的数据类型。与int,String本质是一样的。类中有属性和方法。
属性:就是变量。
方法:就是与之前写的一样的方法。例:public void print(){int i};
创建对象:
类是一种特殊的数据类型。使用这个类型创建的变量也称为对象。
(所以,使用类创建一个对象时,需要使用new关键字进行实例化)
变量的使用规则:1 先声明,2 初始化,3 使用。
专有名词:
A a = new A();
a:我们叫引用;
new A(); new是实例化。实例化:在内存中创建实例空间的过程。 实例:就是我们内存中开辟的空间。
对象的内存结构:
属性:
-----一般都是指在类中声明的变量,成为成员变量,成员属性。针对成员属性,我们也叫实例属性。
成员属性:就是在类中声明的变量。
成员属性的作用域:是受访问修饰符影响的。属性一般使用 private 。
private 表示私有的。类内私有。表示属性只在声明的这个类中可以使用。
方法:
方法:成员方法,实例方法。在类中声明的方法。
成员方法的作用域:方法一般使用 public 。
public 表示公有的,任意位置都可以使用。
JavaBean 的规范:
一个类如果按 JavaBean 规范编写,应该具备如下三个要求:
- 默认构造方法。
- 私有属性。
- 公有 get/set 方法。
this 关键字:
this 是我们Java 代码中的一个关键字。
this 是在实例内部一个指向实例本身的引用。
我们使用 this 可以指定本类中的属性和方法。
类:
类是对现实世界中大量具有相同属性和相同方法的对象的抽象。
抽象得到属性和方法,再使用 { } 封装起来。起个名字,用个 Class 关键字。
例:
/**
* 这是一个学员类
*/
public class Stu {
//有学号
private int sid;
//有姓名
private String sname;
//有睡觉的方法
public void sleep(int hours){
System.out.println(this.sname + "晚上休息了 "+hours+" 小时!");
}
对象:
类是模板,对象是具体的事物。
- 构造方法
构造方法也是一个方法。
在类中一个特殊的方法。
什么是构造方法:
一个与类名同名的,并没有返回类型描述的方法,叫构造方法。
public class Stu {
//构造方法
public Stu(){
System.out.println("构造方法!");
}
构造方法的分类:
构造方法有如下几种分类:
-
默认构造方法:一个没有参数的构造方法。
隐式构造方法:当一个类没有编写构造方法时,系统会自动为这个类提供一个默认的构造方法。 -
参数化构造方法:有参数的构造方法。
Ps:每一个类都有一个自己的构造方法。
构造方法的作用:
构造方法是在对象被实例化时调用的方法。
在创建实例的过程中一定要调用构造方法来创建我们的对象。
构造方法不用我们来指定。系统会根据 new 关键字后面的类的格式来调用对应的构造方法。
Stu s1 = new Stu();//new关键字时一定要调用构造方法。
//系统会按Stu()来调用对应的构造方法。
构造方法的作用是在实例化时为类的属性进行初始化操作。
public class Stu {
//有学号
private int sid;
//有姓名
private String sname;
//有参构造
public Stu(int sid, String sname) {
this.sid = sid;
this.sname = sname;
}
Stu s1 = new Stu(1,"冯楠");//new关键字时一定要调用构造方法。
- 对象创建的过程
Student s = new Student();
一个对象创建的完整过程包含两个部分:类加载 和 对象创建。
对象创建过程的步骤:实例化—初始化—引用赋值。
- 实例化:内存中开辟实例(Student),并为每一个属性赋默认值。
- 初始化:调用相应的构造方法(Student()),来完成对属性的初始化。
- 引用赋值:将实例的引用赋值给引用)(s)。