面向对象
-
(Object-Oriented Programming,OOP)
-
其本质就是以类的方式组织代码,以对象的形式组织(封装)数据。
-
抽象
-
三大特性:
- 封装
- 继承
- 多态 同一类事物会有多种状态
-
从认知论角度考虑是先有对象后有类。
-
从代码运行角度考虑是先有类后有对象,类是对象的模板。
static 静态修饰符
public static void a(){
b();//会报错
}
public void b(){
}
原因:a()方法被static修饰,所以是和类一起加载的,而b()方法是类实例化之后才存在,调用不存在的b()方法,所以报错。
-
静态方法可以由类(也可以被实例对象)直接调用,即类名.方法名();
-
非静态方法,必须由该类创建的实例对象来调用。
值传递与引用传递
public class Demo{
public static void main(String[] args){
int a = 1;
System.out.println(a);//1
//值传递
Demo.change(a);
System.out.println(a);//1
}
//返回值为空
public static void change(int a){
a = 10;
}
}
public class Demo2{
//引用传递:对象,本质还是值传递
//对象 内存 ??
public static void main(String[] args){
Student stu = new Student();
System.out.println(stu.name);//NULL
Demo2.change(stu);
System.out.println(stu.name);//"飞人"
}
public static void change(Student stu){
//stu现在是个对象,指向的是具体的Student,可以改变属性!
stu.name = "飞人";
}
}
public class Student{
String name;//默认值NULL
}
类和对象的关系
-
类是一种抽象的数据类型,它是对某一类事物整体描述/定义,但不能代表某一个具体的事物
- 动物、植物、教师、学生...
- 这些类都是用来描述/定义某一类具体事物应具备的特点和行为
-
对象是抽象概念的具体实例
- 张三是人的一个具体实例,张三家的旺财就是狗的一个具体实例
- 能够体现出特点,展现出功能的是具体的实例,而不是一个抽象的概念
创建与初始化对象
- 使用new关键字创建对象
- 用new关键字创建时,除了分配内存空间外,还会给创建好的对象进行默认的初始化
以及对类中构造器的调用
- 类中的构造器也叫做构造方法,就是调用的它进行对象的创建,且有两个特点
- 必须和类的名字相同
- 必须没有返回类型,也不能写void
- 构造器必须要掌握