类和对象
类和对象介绍
类
定义:是对现实生活中一类具有相同属性和行为的事物的抽象。 特点: ①类是对象的数据类型 ②类是具有相同属性和行为的一组对象的集合 ③一个类可以对应多个对象,只要对象的属性和行为是相同的
对象
定义:万物皆对象,客观存在的事物皆是对象。 是能够看得到摸得着的真实存在的实体。
对象的属性
属性:对象具有的各种特征,每个对象的每个属性都拥有特定的值。
对象的行为
行为:对象能执行的操作。
关系
- 对象和类之间的关系:
①对象是计算机中具体的数据信息;类是信息的数据类型。 ②对象是能够看到到摸得着的真实存在的实体;类是对现实生活中一类具有共同属性和行为的事物的抽象。 ③对象是类的实体;类是对象的抽象。
类的定义
类基础内容
类的重要性:是java程序的基本组成单位; 类:是对现实生活中一类具有相同属性和行为的事物的抽象,确定对象将拥有的属性和行为。 类的组成:属性和行为。 属性:在类中通过成员变量来体现(类中方法外的变量) 行为:在类中通过成员方法来体现(和前面的方法相比去掉static关键词即可)
类的定义步骤
定义步骤: ①定义类 ②编写类的成员变量 ③编写类的成员方法
public class 类名(){
变量1数据类型 变量1;
变量2数据类型 变量2;
方法1;
方法2;
}
案例: //类手机;成员变量品牌、价格;成员方法打电话、发短信;
public class Demo110 {
String brand;
int price;
public void call(){
System.out.println("打电话");
}
public void sendMessage(){
System.out.println("发短信");
}
}
对象的使用
创建对象
类名 对象名 = new 类名();
使用对象
使用成员对象
格式:对象名.变量名
使用成员方法
格式:对象名.方法名()
案例: //需要在phoneDemo类下所在包下,创建phone类。
public class phone {
String brand;
int price;
public void call(){
System.out.println("打电话");
}
public void sendMessage(){
System.out.println("发短信");
}
}
public class phoneDemo {
public static void main(String[] args) {
phone p = new phone();
System.out.println(p.price);
System.out.println(p.brand);
p.price = 2999;
p.brand = "小米";
System.out.println(p.price);
System.out.println(p.brand);
p.call();
p.sendMessage();
}
}
案例:学生 思路:
①定义一个学生类(Student)
成员变量:name、age
成员方法:study();
doHomework();
②定义一个学生测试类(StudentDemo)
要做测试,有主方法,main方法
③在学生测试类中通过调用对象完成成员变量和成员方法的使用
给成员变量赋值,输出成员变量的值
调用成员方法
代码:
public class Student{
String name;
int age;
public void study(){
System.out.println("学习");
}
public void doHomework(){
System.out.println("做作业");
}
}
public class StudentDemo {
public static void main(String[] args){
Student stu = new Student();
System.out.println(stu.name);
System.out.println(stu.age);
stu.name = "xhj";
stu.age = 25;
System.out.println(stu.name);
System.out.println(stu.age);
stu.study();
stu.doHomework();
}
}
单个对象
对象内存图(单个对象) 图示: 代码:
public class Student{
String name;
int age;
public void study(){
System.out.println("学习");
}
public void doHomework(){
System.out.println("做作业");
}
}
public class StudentDemo {
public static void main(String[] args){
Student stu = new Student();
System.out.println(stu);
System.out.println(stu.name);
System.out.println(stu.age);
stu.name = "xhj";
stu.age = 25;
System.out.println(stu.name);
System.out.println(stu.age);
stu.study();
stu.doHomework();
}
}
多个对象
对象内存图(多个对象) 图示: 代码:
public class StudentDemo2 {
public static void main(String[] args){
Student stu1 = new Student();
stu1.age = 30;
stu1.name = "汐沫";
System.out.println(stu1);
System.out.println(stu1.age + ", " + stu1.name );
stu1.study();
stu1.doHomework();
Student stu2 = new Student();
stu2.age = 20;
stu2.name = "西贝";
System.out.println(stu2);
System.out.println(stu2.age + ", " + stu2.name );
stu2.study();
stu2.doHomework();
}
}
多个对象指向相同的内存图
图示: 代码:
public class StudentDemo3 {
public static void main(String[] args){
Student stu1 = new Student();
stu1.age = 33;
stu1.name = "汪苏泷";
System.out.println(stu1);
System.out.println(stu1.name + ", " + stu1.age);
Student stu2 = stu1;
stu2.age = 36;
stu2.name = "许嵩";
System.out.println("stu2:" + stu2);
System.out.println("stu1:"+stu1);
System.out.println("stu2:"+stu2.name + ", " + stu2.age);
System.out.println("stu1:"+stu1.name + ", " + stu1.age);
}
}
成员变量和局部变量
两者定义
成员变量:类内方法外的变量 局部变量:方法中的变量
两者区别
区别 | 成员变量 | 局部变量 |
---|
类中位置不同 | 类内方法外 | 方法内或方法声明上 | 内存中位置不同 | 堆内存 | 栈内存 | 生命周期不同 | 随着对象的存在而存在,随着对象的消失而消失 | 随着方法的调用而存在,随着方法的调用完毕而消失 | 初始化值不同 | 有默认的初始值 | 没有默认的初始化值,必须先定义,赋值,才能使用 |
理解: ①类中位置不同,局部变量在方法内或方法申明上,方法申明上指的是:定义方法时形参的位置,也就是括号中的变量。
封装
private关键字
- 介绍:
是一个权限修饰符; 可以修饰成员(成员变量和成员方法); 作用:是保护成员不被别的类使用,被private修饰的成员只能在本类中才能被访问; - 针对private修饰的成员变量,如果需要被其他类使用,提供相应的操作。
提供
g
e
t
变
量
名
(
)
 ̄
\underline{get变量名()}
get变量名()?方法,用于获取成员变量的值,方法用public修饰; 提供
s
e
t
变
量
名
(
参
数
)
 ̄
\underline{set变量名(参数)}
set变量名(参数)?方法,用于设置成员变量的值,方法用public修饰。 注意:变量名要注意首字符大写。
案例:测试类
public class Student1Demo {
public static void main(String[] args){
Student1 stu = new Student1();
stu.name = "aa";
stu.getAge();
stu.setAge(-30);
stu.show();
}
}
案例:学生类
public class Student1 {
String name;
private int age;
public int getAge(){
return age;
}
public void setAge(int a){
if(a < 0 || a > 120){
System.out.println("输入的年龄有误");
}else{
age = a;
}
}
public void show(){
System.out.println(name + ", " + age);
}
}
代码重点图示:
private关键字使用
标准的编写: 把成员变量用private修饰; 提供对应的getXxx()/getXxx()方法。 代码:学生测试类
public class StudentDemo {
public static void main(String[] args){
Student stu = new Student();
stu.setName("汪苏泷");
stu.setAge(33);
stu.show();
System.out.println(stu.getName() + "---" + stu.getAge());
System.out.println(stu.getName() + "***" + stu.getAge());
}
}
代码:学生类
public class Student {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String n) {
name = n;
}
public int getAge() {
return age;
}
public void setAge(int a) {
age = a;
}
public void show() {
System.out.println(name + "," + age);
}
}
this关键字
介绍:
案例:学生类
public class Student1 {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name){
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int a) {
age = a;
}
public void show() {
System.out.println(name + "," + age);
}
}
案例:学生测试类
public class StudentDemo1 {
public static void main(String[] args) {
Student1 stu = new Student1();
stu.setName("汪苏泷");
stu.setAge(33);
stu.show();
}
}
this引入图示:
this内存原理
理解:方法被哪个对象调用,那个方法里面的this就是哪个对象。
|