一.类与对象的定义
(1)类(设计图):是对象共同特征的描述:
(2)对象:是真实存在的具体东西。
在Java中,必须先设计类,才能获取对象。
二.如何定义类
public class 类名{
1.成员变量(代表属性,一般是名词)
2.成员方法(代表行为,一般是动词)
3.构造器
4.代码块
5.内部类
}
三.如何获得对象
类名 对象名=new 类名()
四.拿到对象后能做什么?
对象.成员变量;
对象.成员方法(...)
五.定义类的补充注意事项
用来描述一类事物的类,专业叫做:Javabean类。
在javabean类中,是不写main方法的。
在以前,编写main方法的类,叫做测试类。
我们可以在测试类中创建javabean对象并进行赋值调用。
六.类名的注意事项
(1)类名首字母建议大写,需要见名知义,驼峰模式。
(2)一个java文件中可以定义多个class类,且只能有一个类是public修饰,而且public修饰的类名必须成为代码文件名。
实际开发中建议还是一个文件定义一个class类。
(3)成员变量的完整格式是:修饰符 数据类型 变量名称 =初始化值; 一般无需指定初始化值,存在默认值。
七.默认初始化值规则
七.prviate关键字
(1)作用:prviate这个关键字可以修饰成员变量和成员方法。
使用prviate修饰的成员变量,只能在本类中进行访问,使定义的变量更加合理。
(2)案例:
可以看到提示变红了。
(3)案例
s.age = -20;
代码没有报错,但是不合理。
验证:alt+ins 快速生成
我们可以使用set和get方法来,限制变量。
代码:
public int getAge() {
return age;
}
public void setAge(int age) {
if (age >= 0 && age <= 100) {
this.age = age;
} else {
System.out.println("非法参数");
}
}
s.setAge(-20);
这样就限制了传递。
八.就近原则和this关键字
(1)成员变量和局部变量
局部变量:定义在方法里面的变量就是局部变量。
成员变量:定义在方法外面类里面的变量。
(2)案例( 不加this的情况下)
package ceshi;
public class Student1 {
String name;
int age; //0
public void sleeep() {
int age = 10;
System.out.println(age);
}
}
package ceshi;
public class Student2 {
public static void main(String[] args) {
Student1 s = new Student1();
s.sleeep();
}
}
(3)案例( 加this情况)
package ceshi;
public class Student1 {
String name;
int age; //0
public void sleeep() {
int age = 10;
System.out.println(this.age);
}
}
(4)总结
根据就近原则,没加this,就在自己的局部变量去找,局部变量打印有age10。
如果有this,先去成员变量进行查找,这里的this其实也是一个地址值,所以打印的默认值0
九.构造方法
(1)概念
构造方法也叫构造器,构造函数。
作用:在创建对象的时候给成员变量进行赋值的。
(2)构造方法的格式
public class Student{
修饰符 类名(参数){
方法体;
}
}
(3)特点
1.方法名与类名相同,大小也要一直。
2.没有返回值,连void都没有
3.没有具体的返回值(不能由rerurn带回结果数据)
(4)空参构造
如果自己没有写任何的构造方法,虚拟机会加上空参的构造方法。
(5)有参构造--在创建变量的同时 赋值。
当我们创建对象的时候,系统会根据后面的参数,自动去调用构造函数。
省的自己去set。
(6)实际开发
空参构造和有参构造一起写
(7)构造方法的概述
创造对象的时候,虚拟机会自动调用构造方法,作用是给成员变量初始化的。
八.一个标准的Javabean类
1.类名需要见名知意
2.成员变量使用prviate修饰。
3.提供至少两个构造方法
(1)无参构造方法
(2)有参构造方法
4.成员方法
(1)提供每一个成员变量对应的setXxx()/getXxx()
(2)如果还有其他行为,也需要写上。
5.练习
package ceshi;
public class Student1 {
private String username;
private String password;
public Student1() {
}
public Student1(String username, String password) {
this.username = username;
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}