JavaSE基础
多听一遍不如多练一遍,多练一遍不如总结一遍,希望各位在学习的过程中,要多听,多写,多练,每天将自己所学汇总一遍,查缺补漏,成就更好的自己
文章目录
一、类和对象概述
1.1 面向对象思想
面向对象和面向对象都是对软件分析、设计和开发的一种思想
面向过程
面向过程适合简单、不需要协作的事务,重点关注如何执行 ,比如如何开车,点火挂挡起步转弯倒车就可以完成,比较简单,单人可以完成
面向对象
面向过程适合复杂,需要协同合作的任务,比如如何造车,造车就要考虑由怎么设计,他的部件什么构成。
类
那么车就是一个对象
对象
轮胎,发动机,方向盘,车架,等就是车的对象
1.2 类中的内容
- 类名
- 类的名称
- 属性
- 对象具备的特征
- 品种、姓名、年龄、地址…
- 方法
- 对象具备的行为
- 吃饭、睡觉、学习、工作…
二、创建类
2.1 过程
1、确定类名【名词提炼法】
狗子--Dog
猫咪--Cat
学生--Student
2、创建一个新的Java文件
文件名和类名保持一致
3、定义属性
声明变量【一般不用赋值】
int age;
String name;
4、定义方法
public void eat(String food){}
2.2 入门案例
Student
package com.javastudy;
/**
* 类名
* Student
* 属性--特征
* 名字
* 年龄
* 性别
* 学号
* 方法--行为
* 吃饭
* 睡觉
* 学习
*/
public class Student {
// 属性--声明变量【一般不赋值,像方法中声明的形参一样】
String name;
int age;
String sex;
String id;
// 方法--不用全部添加static
public void eat(String food) {
System.out.println(name+"喜欢吃" + food);
}
public void sleep() {
System.out.println(name+"作息时间很规律");
}
public void study() {
System.out.println(name+"在学习");
}
}
三、对象
3.1 概述
- 类是抽象的
- 类中总结了对象应该具有的属性和行为
- 这些属性和行为没有具体的数据
- 属性只有声明,没有赋值【虽然有默认值】
- 方法没有被调用,方法的形参也没有赋值
- 如果需要使用属性和方法,需要创建此类的对象
- 没有对象–》new一个
3.2 创建对象
package com.javastudy;
public class TestStudent {
public static void main(String[] args) {
/**
* 创建对象的过程
* 1、创建类
* 1.1 类名
* 1.2 属性
* 1.3 方法
* 2、创建对象
* 2.1 new 对象
* 2.2 访问属性【读===写】 对象.属性
* 2.3 调用方法 对象.方法(参数)
*/
// 创建对象
Student stu = new Student();
// 访问属性【读--写】
// 读取属性:对象.属性
// 目前没有给属性赋值,有默认值【参考数组】,意义不大
System.out.println(stu.name);
System.out.println(stu.age);
System.out.println(stu.sex);
System.out.println(stu.id);
// 修改属性:对象.属性 = 数据
stu.id = 10001;
stu.name = "张三";
stu.age = 23;
stu.sex = "男";
// 再次读取属性
// 目前已经给属性赋值
System.out.println(stu.name);
System.out.println(stu.age);
System.out.println(stu.sex);
System.out.println(stu.id);
// 调用方法:dog.方法名(参数)
stu.eat("米饭");
stu.sleep();
stu.study();
}
}
3.3 访问属性和方法
访问属性
读取数据
对象.属性
String name = 对象.name;
修改数据
对象.属性 = 数据;
对象.name = "道哥";
访问方法
对象.方法名(参数);
对象.eat("骨头");
3.4实例变量
- 属性 == 实例变量 == 实例属性 == 成员变量
- 实例变量是定义在类中方法外的变量,是对象的组成部分之一
- 实例变量有默认值,无需赋值即可使用【默认值和数组相同,没有意义】
- 如果创建了多个对象,每个对象都拥有自己的实例变量,互相隔离
选项 | 局部变量 | 实例变量 |
---|---|---|
定义位置 | 方法中 | 类中方法外 |
默认值 | 无 | 有,同数组元素默认值 |
作用范围 | 从定义位置开始到方法结束 | 整个类中都能使用 |
存储位置 | 栈 | 堆 |
生命周期 | 同方法 | 同对象 |
- 如果局部变量和实例变量重名,优先使用局部变量【就近原则】
四、构造器
4.1 概述
- 构造器也称为构造方法
- 是类中一个特殊的方法
- 方法名和类名完全相同
- 没有返回值,也没有返回值类型
- 在创建对象的过程中自动调用,不能通过.的方式调用
4.2 无参构造器
- 如果没有在类中手动书写任何构造方法,JVM赠送一个无参数的构造方法
- 如果自习显示定义了任何构造方法,JVM不再赠送
4.3 有参数的构造器
- 为了给类中的属性赋值
- 如果发生实例变量和局部变量重名的情况:
- 可以使用this.属性明确表示调用实例变量
4.4 构造器案例
People类
/**
* 类名
* People
* 属性
* 种类
* 姓名
* 年龄
* 性别
* 地址
* 备注信息
* 方法
* 展示
*/
public class People {
// 属性
String breed;
String name;
int age;
String gender;
String address;
String info;
// 创建构造器,无参构造器
public People() {}
/**
* 有参数的构造器,完成对象属性的赋值
* @param breed
* @param name
* @param age
* @param gender
* @param address
* @param info
*/
public People(String breed, String name, int age, String gender, String address, String info) {
this.breed = breed;
this.name = name;
this.age = age;
this.gender = gender;
this.address = address;
this.info = info;
}
// 方法
public void show() {
System.out.println("People [breed=" + breed + ", name=" + name + ", age=" + age + ", gender=" + gender + ", address="+ address + ", info=" + info + "]");
}
}
测试
public class TestPeople {
public static void main(String[] args) {
// 创建对象
People p = new People();
p.show();
p.breed = "黄色人种";
p.name = "金三顺";
p.age = 22;
p.gender = "女性";
p.address = "汉城";
p.info = "温柔美丽贤惠大方";
p.show();
People pp = new People("黄色人种", "山本一郎", 22, "男性", "我本山中人", "门口有条河");
pp.show();
}
}
4.5 构造器赋值过程
4.6 构造方法重载
五、this关键字
5.1 概述
- 在构造器中可能遇到实例属变量和局部变量重名的情况
- 默认优先使用局部变量,实例变量失效
- 可以使用this.属性的方式来明确就是调用实例变量
5.2 this关键字的用法
调用属性
- 为了区分局部变量和实例变量
this.属性
调用方法
this.方法(参数);
调用其他构造器
- 能调用类中其他的构造方法
- 必须放在构造方法第一行
- 为了节省代码
this(参数)
案例代码
/**
* 类名
* Car
* 属性
* 品牌
* 型号
* 价格
* 颜色
* 方法
* 展示
*/
public class Car {
// 属性
String brand;
String model;
double price;
String color;
public Car() {}
public Car(String brand, String model) {
super();
this.brand = brand;
this.model = model;
}
public Car(double price, String color) {
super();
this.price = price;
this.color = color;
}
public Car(String brand, String model, double price, String color) {
// this.属性表示调用实例变量
// this.brand = brand;
// this.model = model;
// this(参数)表示调用其本类中的他构造方法
// 构造器的调用必须放在其他构造器的第一行
this(brand, model);
// this(price, color);
this.price = price;
this.color = color;
// this.方法表示调用实例方法
this.show();
}
// 方法
public void show() {
System.out.println("Car [brand=" + brand + ", model=" + model + ", price=" + price + ", color=" + color + "]");
}
}