1.面向对象
面向对象有两个词必须要掌握
类:
类是对具有相同属性和相同行为的一类事物的描述.任何事物都是类
对象:
对象是类的具体体现
2.类的定义和对象创建
类的定义:
public class 类名{
//属性(成员变量)
//行为(成员方法)
}
创建对象:
类名 对象名 = new 类名();
package com.itheima01;
//人类
public class Person {
//成员变量(属性)
String name; //名字
char sex; //性别
int age; //年龄
//成员方法
//吃饭
public void eat(String food){
System.out.println(name + "爱吃" + food);
}
//睡觉
public void sleep(){
System.out.println("人一天要睡8小时");
}
}
package com.itheima01;
public class Demo02 {
public static void main(String[] args) {
//创建人的对象
Person p = new Person();
//给成员变量赋值
p.name = "王鑫";
p.sex = '男';
p.age = 28;
//调用方法
p.eat("鸡蛋");
p.sleep();
}
}
3.类的区别
Demo01称为叫测试类
里面要写主方法
所有的方法都要写static
Phone称为实体类
里面不写主方法
所有的方法都不写static(目前)
4.内存图
4.1一个对象的内存图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GMWGAcmQ-1632139950702)(1.内存图.png)]
4.2两个对象的内存图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8HpY2n4G-1632139950704)(2.内存图.png)]
4.3两个变量一个对象的内存图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-av6c5BOT-1632139950706)(3.内存图.png)]
4.4打印对象的效果问题
在实体类中可以用alt+insert生成一个toString()方法
如果没有这个方法,打印对象就显示对象的地址值
如果有这个方法,打印对象就显示对象的内容
//方法toString()
//快捷键: alt + insert (+Fn)
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", sex=" + sex +
", age=" + age +
'}';
}
5.成员变量和局部变量的区别
定义位置:
成员变量,定义在类中方法外的变量
局部变量,定义在方法中的变量
默认值:
成员变量,有默认值,不赋值也能输出
局部变量,没有默认值,必须赋值后才能输出
内存位置:
成员变量,存储在堆内存
局部变量,存储在栈内存
加载时间(生命周期):
成员变量:随着对象的创建进入的堆内存
局部变量:随着方法的调用进入的栈内存
6.this
作用:
1.在成员变量和局部变量重名的时候,用来区分成员变量和局部变量
2.用来在方法中表示调用方法的对象(现在用不上)
7.封装
private
私有的,属于一种封装
可以用来修饰成员变量和成员方法(目前只用来修饰成员变量)
用private修饰之后,成员就只能在本类中使用,不能在其他类中直接使用
提供让别的类使用的方法:
setXxx():别的类可以使用set方法给成员变量赋值
getXxx():别的类可以使用get方法获取成员变量的值
8.构造方法
作用:
构造方法的作用是创建对象的,并可以在创建对象的时候给成员变量赋值
格式:
修饰符 类名(参数){
}
举例:
public Person(){
}
特点:
1.构造方法没有返回值类型
2.构造方法方法名和类名一样
注意事项:
1.如果一个类中没写构造方法,系统会自动有一个空参构造
2.如果一个类中写了构造方法,系统就不会再提供空参构造
3.构造方法可以重载,构造方法虽然没有返回值类型但是可以写return用来结束方法
9.标准类制作
以后工作写实体类和现在写的一模一样的格式
package com.itheima02;
public class Student {
private String name;//姓名
private int age; //年龄
//快捷键 alt + insert
//构造方法
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
//set get
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
//吃饭方法
public void eat(String food){
//23岁的张三正在吃馒头
System.out.println(age+"岁的"+name+"正在吃"+food);
}
}
package com.itheima02;
public class Demo {
public static void main(String[] args) {
//类名 对象名 = new 类名();
Student s = new Student();
s.setName("张三");
s.setAge(23);
s.eat("馒头");
//类名 对象名 = new 类名(参数);
Student s2 = new Student("李四",24);
s2.eat("火锅");
}
}
总结
什么是类?
什么是对象?
成员变量和局部变量的区别
定义位置?
默认值?
内存位置?
生命周期?
this的作用?
private
能给谁加这个词?
加了这个词有什么效果?
set方法?
get方法?
构造方法
作用是干嘛的?
特点是什么?
1.方法名和类名一样
2.没有返回值类型
标准类
public class 类名{
成员变量
构造方法
set/get方法
成员方法
}