客观存在的事物皆为对象 ,所以我们也常常说万物皆对象。
类的组成是由属性和行为两部分组成
类的定义步骤:
类的结构:
public class 类名 {
// 成员变量
变量1的数据类型 变量1;
变量2的数据类型 变量2;
...
// 成员方法
方法1;
方法2;
}
示例代码:
public class Phone {
//成员变量
String brand;
int price;
//成员方法
public void call() {
System.out.println("打电话");
}
public void sendMessage() {
System.out.println("发短信");
}
}
创建对象的格式:
类名 对象名 = new 类名();
调用成员的格式:
对象名.成员变量
对象名.成员方法()
示例代码:
public class Demo {
public static void main(String[] args) {
//创建对象
Phone p = new Phone();
//使用成员变量
System.out.println(p.brand);
System.out.println(p.price);
p.brand = "小米";
p.price = 2999;
System.out.println(p.brand);
System.out.println(p.price);
//使用成员方法
p.call();
p.sendMessage();
}
}
两者的定义主要是根据在类中的位置来定义的。
在使用变量时需要遵循的原则为:就近原则。 首先在局部范围找,有就使用;接着在成员位置找。
局部变量 | 成员变量 | |
---|---|---|
类中位置 | 方法或方法的内部 | 类的内部,方法的外部 |
内存中位置 | 栈内存 | 堆内存 |
生命周期 | 随着对象的存在而存在,随着对象的消失而消失 | 随着方法的调用而存在,醉着方法的调用完毕而消失 |
默认值 | 无默认值 | 字面值,(与数组相同)的默认值 |
使用范围 | 从定义行到包含其结构的代码块结束 | 本类(内有效) |
命名冲突 | 局部变量之间不允许重名 | 可与局部变量重名,局部变量优先 |
private是一个修饰符,可以用来修饰成员(成员变量,成员方法)
//学生类
class Student {
//成员变量
String name;
private int age;
//提供get/set方法
public void setAge(int a) {
if(a<0 || a>120) {
System.out.println("你给的年龄有误");
} else {
age = a;
}
}
public int getAge() {
return age;
}
//成员方法
public void show() {
System.out.println(name + "," + age);
}
}
//测试类
public class Demo {
public static void main(String[] args) {
//创建对象
Student s = new Student();
//给成员变量赋值
s.name = "林青霞";
s.setAge(30);
//调用show方法
s.show();
}
}
public class Student {
//成员变量
private String name;
private int age;
//成员方法
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
public void show() {
System.out.println(name + "," + age);
}
}
构造方法是一种特殊的方法,用来构造一个类的实例
作用: 创建对象
Student stu = new Student();
格式:
public class 类名{
修饰符 类名( 参数 ) {
}
}
功能:主要是完成对象数据的初始化
示例代码:
// 学生类
class Student {
private String name;
private int age;
//构造方法
public Student() {
System.out.println("无参构造方法");
}
public void show() {
System.out.println(name + "," + age);
}
}
//测试类
public class Demo {
public static void main(String[] args) {
//创建对象
Student s = new Student();
s.show();
}
}