面向对象编程【oop】
什么是面向对象
面向对象编程的本质就是:以类的方式组织代码,以对象的组织(封装
)数据。
抽象
三大特性:封装、继承、多态
从认识论角度考虑是先有对象后有类。
对象,是具体的事物。
类,是抽象的,是对对象的抽象。
从代码运行角度考虑是先有类后有对象的。
类是对象的模板。
方法的调用
静态方法有static的可以直接在主类中调用
非静态方法要实例化才能调用
公共类要和主类在同一文件中
形参和实参
形式参数和实际参数的类型要一致
public static void main(String[] args){
int add = add(1,2);// 实参
}
public static int add (int a ,int b){// 形参
return a+b;
}
值传递
public class Demo04{
public static void main(String[] args){
int a=1;
System.out.println(a);//1
Demo04.change(a);
System.out.println(a);//1
}
//返回值为空
public static void change(int a ){
a=10;
}
}
引用传递
对象,本质还是值传递
public class Demo05{
public static void main(String[] args){
Person person = new Person();
System.out.pringln(person.name);//null
Demo05.change(person);
System.out.println(person.name);//陈
}
public static void change(Person person){
//person是一个对象:指向的--》Person person= new Person();这是一个具体的人可以改变
person.name="陈";
}
}
//定义了一个Person类,有一个属性:name
class Person{
String name;//null
}
类与对象
类是一种抽象的数据类型,它是对某一类事物整体描述/定义,但是并不能代表某一个具体的事物。
对象是抽象概念的具体实例
类是抽象的它需要实例化。
类:静态的属性、动态的行为
构造器
一个类即使什么都不写,它也会存在一个方法。
构造函数基本上定义了两个规则。分别如下:
- 构造函数名必须与其类名称相同
- 构造函数必须没有显式返回类型
创建对象内存分析
main方法在栈底部
对象是通过引用操作的:栈---》堆