面向对象编程(oop)
一、类(类是设计图,对象是具体实例,所以先设计类,再通过类设计对象并使用)
示例:
public class Car {//定义一个Car类
String name;//设置属性(成员变量)
double price;
public void Start(){//定义方法(成员方法)
System.out.println(name+"启动了!");
}
public void run(){
System.out.println(price+"跑起来了");
}
}
public class text {
public static void main(String[] args) {
Car c = new Car();//创建对象
c.name = "BMW";//访问属性及方法
c.price = 30.57;
c.Start();//调用方法
c.run();
}
}
定义类的注意事项:
1、类名必须,首字母大写,满足驼峰模式,合法标识符不能是关键字,且有意义。
2、一个class文件可以定义多个类,但只能有一个类被public修饰,且该类名必须与class文件名相同。(实际开发中一个代码文件只定义一个类)
3、成员变量的完整定义格式是:修饰符 数据类型 变量名称 = 初始化值;(一般无需初始化,存在默认值)
默认值规则:
byte、int、short、long 默认值0
double float 默认值0.0
boolean 默认值false
String等引用类型 默认值null
二、对象在内存中的运行机制:
1、多个对象
代码:
public class Car {
String name;//设置属性(成员变量)
double price;
public void Start(){//定义方法
System.out.println(name+"启动了!");
}
public void run(){
System.out.println(price+"跑起来了");
}
}
public class text {//①
public static void main(String[] args) {//②
Car③ c ④= new Car();⑤//创建对象
c.name = "BMW";//设置属性
c.price = 30.57;⑥
c.Start();//调用方法
c.run();⑦
}
}
①、先在方法区加载类,②、再将类中的main方法提到栈内存中。③、再将car类加载到方法区包括其成员变量和成员方法,④、引用变量c会加载到栈内存中,⑤、new出来的对象放在堆内存(并存在其地址),并在堆内存中开辟一些空间来放置属性信息和对象方法的引用地址(通过地址指向方法区中的成员方法),接下来将堆内存中对象的地址赋值给引用变量c。通过栈内存中c的地址,在堆内存中找到对象,再将其name属性改为BMW,price属性改为30.57,⑦、接下来继续通过栈内存中c的地址,在堆内存中找到对象,再通过其存储的成员方法的引用地址找到方法区中car类的Start方法,再将其提取到栈内存中执行,执行方法时也是通过c的地址调用堆内存中对象c的属性信息。若存在多个对象,其流程从④开始继续沿用。
2、两个变量指向同一个对象
public class Students {
String name;//设置属性(成员变量)
char sex;
String hobby;
public void