概述
一、面向对象编程:
以软件的“对象个体”为思考方向的编程思想,其核心想法是从软件“对象个体”,通过缝隙对象的属性(数据)、行为(算法)等,逐步归纳抽象出可以复用的软件组件(复用、扩张)。
面向对象编程特征:
- 封装
- 继承
- 多态
类和对象:
对象:对象是指软件中个体或者逻辑上存在的个体。(万物皆对象)
类:就是类型一致的对象(数据、方法)归纳出来的数据结构,面向对象编程的目的就是实现代码的复用,简单点就是一份代码可以重复干更多事情。
public class LearnMain {
//主程序入口
public static void main(String[] args) {
System.out.println("主程序开始!");
//创建对象
Ball ball=new Ball();
System.out.println("创建对象"+ball.x);
//调用方法
System.out.println("调用setX方法");
ball.setX(500);
//方法的重载
System.out.println("调用setX的重载方法");
ball.setX(500,20);
}
}
//创建类
class Ball {
int d;
double x;
int r;
/*
创建构造器
*/
public Ball(){//无参构造,
d=10;
x=2;
r=255;
}
//使用this重用构造器(this必须写在第一行)
public Ball(int x){
this(x,x,x);//使用this会重用构造器,找对应的参数个数的构造器。
}
public Ball(int d,int x, int r){//有参构造,参数可以根据需求定义
this.d=d;//使用this指向全局变量(没有用static申明的全局变量也是实例变量;简单点就是:类变量在内存中存在1个,实例变量随创建对象的增加而增加的变量)
this.x=x;
this.r=r;
}
/*
方法
*/
public void setX(int x){
System.out.println("你调用的设置x值得方法,当前x值为:"+this.x);
this.x=x;
System.out.println("你调用的设置x值得方法,设置x值后的值为:"+this.x);
}
//方法的重载:方法的名一样,参数和方法体不一样;
public void setX(int x,int r) {
this.x = x;
this.r=r;
System.out.println("通过重载setx设置了x,r的值:"+this.x+";"+this.r);
}
}
对象的内存管理
内存分为三大区:方法区、栈区、堆区;
- 方法区:静态区,类和方法都加载到此区域(固定不变的),只加载一次;
- 栈:局部变量的空间,局部方法中生成的变量(随时都会变化的),在方法结束后会自动注销,
- 堆:全部对象都在堆中分配,