面向对象编程:拿东西过来做对应的事。
类(设计图):是对象共同特征的描述;
对象:是具体存在的具体东西;
如何定义类:
public class 类名{
成员变量(属性)
成员方法(行为)
构造器
代码块
内部类
}
类名 对项名 = new 类名();
在JAVA中,必须先设计类,才能获得对象!!!
1) javabean 类:用来描述一类事物的类 (在 javabean 中,是不写 main 方法的)
2)在以前,编写 main 方法的类,叫做测试类
我们可以在测试类中创建 javabean 类的对象进行赋值调用。
类名首字母建议大写,驼峰命名!
一个JAVA文件中可以写多个 class 类,且只能一个类是 public 修饰,而且 public 修饰的类名必须成为代码的文件名;实际还是建议一个文件定义一个class类。
成员变量的完整定义格式:修饰符 数据类型 变量名称 = 初始化值;
(一般无需指定初始化值,存在默认值)
首先,咱讲讲面向对象的三大特征:封装;继承;多态。
封装教我们如何正确设计对象的属性和方法。
对象代表什么,就得封装对应的数据,并提供数据对应的行为;
public class Circle{
double radius;
public void draw(){
System.out.println(“根据半径”+radius+“画一个圆”);
}
}
1.对象代表什么,就得封装对应的数据,并提供数据对应的行为;
2.降低学习成本,可以少学,少记;
3.使编程难度降低
1. 是一个权限修饰符
2. 可以修饰成员(成员变量和成员方法)
3. 被 private 修饰的成员只能在本类中才能访问
成员变量: 成员变量是定义在类中,却不在类里的方法、构造函数或者代码块里的变量
作用域:在整个类内都有效,类里的所有方法、构造函数和代码块都能够访问它。
生命周期:若是静态成员变量,它会随着类的加载而创建,随着类的卸载而销毁;要是实例成员变量,会在对象创建时创建,对象被销毁时销毁。
初始化:如果没有显式初始化,会有默认值。像数值类型默认值是 0,布尔类型默认值是 false,引用类型默认值是 null。
局部变量:局部变量是定义在方法、构造函数或者代码块内的变量
作用域:仅在定义它的方法、构造函数或者代码块内有效。
生命周期:从定义它的地方开始,到所在的代码块结束时销毁。
初始化:在使用前必须显式初始化,不然会编译错误。
就是谁离我近,我就用谁
System.out.println(age);
System.out.println(this.age);
this 的作用:区分成员变量和局部变量
构造方法:也叫做构造器、构造函数;
分为无参数构造方法和有参数构造方法;
作用:在创建对象的时候给成员变量进行赋值;
public class Student{
修饰符 类名(参数){
方法体;
}
}
特点:
1.方法名与类名相同,大小写也要一致;
2.没有返回值类型,连void也没有;
3.没有具体的返回值(不能由 return 待会结果数据)
创建对象的时候,由虚拟机自动调用,给成员变量进行初始化的。
1) 如果没有定义构造方法,系统会给出一个默认的无参数的构造方法;
2) 如果定义了构造方法,系统就不会再提供默认的构造方法了。
1)带参构造方法,和无参数构造方法,二者方法名相同,但是参数不同,这叫做构造方法的重载
3.推荐的使用方式
无论是否使用,都手写无参数构造方法和带全部参数的构造方法。
要求:1)类名需要见名知意
2)成员变量使用private修饰
3)至少提供两个构造方法
a.无参构造方法 b.带全部参数的构造方法
4)成员方法
a.提供每一个成员变量对应的 setxxx()或 getxxx()
b.如果还有其他行为,也需要写上
快捷键:alt + insert 或 alt + fn + insert
插件:PTG(需要连接外网),可以1s生成标准 JavaBean
a. 加载class文件
b. 申明局部变量
c. 在堆内存中开辟一个空间
d. 默认初始化
e. 显示初始化
f. 构造方法初始化
g. 将堆内存中的地址值赋值给左边的局部变量
当两个变量指向同一个空间的时候,只要有其中一个变量对这个空间里的值发生了改变,那么其他的变量再次访问的时候,就是改变之后的结果了。
整数类型、浮点数类型、布尔类型、字符类型
数据值是存储在自己空间中的
特点:赋值给其他变量,也是赋的真实的值
除了基本数据类型的其他所有类型
数据值是存储在其他空间中的,自己空间中存储的是地址值
特点:赋值给其他变量,赋的是地址值
回顾一下
成员变量:类中方法外的变量
有默认初始值
堆内存
随着对象的创建而存在,随着对象的消失而消失
整个类中都有效
局部变量:方法中的变量
没有初始值,使用之前需要完成赋值
栈内存
着方法的调用而存在,随着方法的运行结束而消失
当前方法中有效