一、面向对象
对象::用类创建出来的就是对象(具体的事物)
面向对象:重点在对象,我该找谁干什么。面向对象相当于是事物的指挥者。
面向对象的好处:
1.将复杂的问题简单化
2.从事务的执行者转化为事务的指挥者
3.它是一种思想,更贴近人得思维
类和对象:
java中 最基本的单位就是类
类:对抽象事物的描述(模板)
对象:用类创建出来的就是对象(具体的事物)
创建一个类
关键词 class 类名(大驼峰)
public class Demo01{}
创建一个对象
Student student = new Student();
Student student 是对一个Student对象的引用(保存对象的地址)
Student student = new Student();
// 使用对象名.属性名 进行赋值和取值
student.name = "王五";
student.age = 22;
student.gender = "男";
//调用成员方法 对象名.方法名()
student.eat();
//哪那个对象调用的该方法 打印的就是那个对象的属性
student.sayHi();
class Student{
//属性(成员变量 实例变量)
//书写位置:类中 方法外
//行为(方法) 跟函数一样
//书写位置:类中
//没有给成员变量初值 成员变量有默认初始化 根据类型不同初始化值不同
String name;
int age;
String gender;
//成员方法/实例方法
public void eat() {
System.out.println("吃饭");
}
public void sleep() {
System.out.println("睡觉");
}
public void playGame(String game) {
System.out.println("玩"+game);
}
//介绍自己的方法
public void sayHi(){
System.out.println("姓名:"+name);
System.out.println("年龄:"+age);
System.out.println("性别:"+gender);
}
}
二、成员变量与局部变量
区别:
1.书写位置
成员变量:类中 方法外
局部变量:方法中或方法上
2.在内存中表现
成员变量:堆内存中
局部变量:栈内存中
3.生命周期
成员变量:随着对象进入堆内存中创建 随着对象销毁而销毁
局部变量:随着方法的调用而入栈 随着方法的结束而销毁
4.作用域
成员变量:整个类中
局部变量:方法中
5.初始值 成员变量:跟堆内存一样 默认初始值
局部变量:默认没有初值 使用时必须初始化才可以使用
成员变量:
class Car{
// 声明成员变量的时候,可以给初值
String name; // 车名
String displacement; //排气量
String color; //颜色
}
局部变量:
public void startCar(int a) {
// 在方法中的变量是局部变量
// 在方法上的变量也是局部变量
int num = 10;
}
三、基本数据类型和引用参数类型
public class Demo04 {
// 参数是基本数据类型
public static void fun1(int a) {
System.out.println(a);
a = 10;
}
// 参数是引用数据类型
// 要什么类型 就给什么类型
public static void fun2(Person p) {
p.name = "李四";
p.age = 24;
}
public static void main(String[] args) {
int a = 100;
fun1(a);
System.out.println(a);
Person p1 = new Person();
p1.name = "王五";
p1.age = 28;
fun2(p1);
p1.sayHi();
}
}
四、匿名对象
匿名对象:没有名字的对象
1.在方法传参数的时候使用
setNameAndAge(new Person(), "jiun", 20);
2.只调用一下方法(不赋值的情况下)
new Person().fun();
五、Java Bean 对象
java bean 对象(java 实体类创建出来的对象)
1.声明成员变量 都需要 私有化
2.给每一个成员变量提供 set/get方法
3.必须提供无参的构造方法
public class Person {
private String name;
public Person(){
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
this关键字
关键字 this 代表的是本类的对象
this.成员变量获取本类的成员变量
this.成员变量="";给本类的成员变量赋值
this.成员方法调用本类的成员方法
谁调用了这个方法谁就是this
this在内存中的表现:
构造方法:对 对象的成员变量进行初始化
写法:
1.没有返回值类型(void也不用写)
2.构造方法方法名要与类名完全一致
class Pen{
public Pen() {
System.out.println("我是Pen类的无参构造方法");
}
}
类中的书写顺序
1.成员变量
2.构造方法(无参 有参)
3.成员方法
4.set/get方法