JAVA之面向对象编程四大特征:封装、继承、多态 + 抽象
一、编程思想的对比
(一)面向过程
1、从头编写到尾,中间穿插方法
2、更接近计算机的运行方式,计算机运行效率更高
3、所有的事情都亲历亲为(劳动者思维:自给自足)
4、适合小项目
代表语言:c
应用场景:单片机
(二)面向对象
1、更接近人类思维(资本家思维:懒惰)
2、比起面向过程,更注重“谁能帮我做这件事情”
3、适合中大型项目
代表语言 | java | c++ | python | js | php |
应用场景 | web后端,服务器端 | 游戏 | 数据挖掘、人工智能、爬虫 | 前端渲染/前端服务器代码 | 快速开发网站后端 |
二、面向对象的含义
大量/经常性使用“对象”进行编程
1、使用java提供的对象(Scanner / Random)
2、使用自定义的对象进行编程
三、对象的作用
1、存储数据(成员属性)
2、实现功能(成员方法/对象方法)
四、自定义对象
(一)自定义 类/模板
1、成员属性(全局变量)
格式:
修饰符 数据类型 属性名 ;
例如:
public int id ;
2、构造方法
作用:1.创建对象 2.初始化数据
特殊点:绝对没有返回值的位置,方法名就是类名
不用遵守小驼峰的一般方法命名规则,而是使用大驼峰。
空参构造/有参构造/全参构造
有参构造的好处:在创建实例时直接赋值,节约时间和代码量。
3、成员方法(对象方法)
绝对没有static,属于对象
标准调用方式 对象名.方法名()
举例如下:
package demo;
/*
*
* 学生类
*
* */
public class Student {
//成员属性 学号 姓名 年龄 性别
public int id;
public String name;
public int age;
public char sex;
//构造方法 空参构造
public Student() {
//初始化数据的代码
id =1 ;
name = "张三";
}
//构造方法 有参构造
public Student(int a ,String b , int c , char d) {
id = a;
name = b;
age = c;
sex = d;
}
//成员方法 (功能)
public void study() {
System.out.println("【"+name+"】好好学习");
}
public void playGame() {
System.out.println("【"+name+"】玩游戏");
}
}
(二)根据模板创建对象
1、创建对象的标准格式
类名 对象名 = new 构造方法();
(等号前面是引用,等号后面是实例)
之前学过的:
Scanner scan = new Scanner(System.in);
Random ran = new Random()
举例如下:
package demo;
public class Demo01 {
public static void main(String[] args) {
//创建一个学生对象
Student s1 = new Student();
System.out.println(s1); //打印地址 为 demo.Student@15db9742
}
}
2、存储数据
对象名.属性 = 值;
举例如下:
package demo;
public class Demo01 {
public static void main(String[] args) {
//创建一个学生对象
Student s1 = new Student();
s1.id = 230922;
s1.name = "赵云";
s1.age = 18;
s1.sex = '男';
System.out.println(s1.id+s1.name);
}
}
代码运行结果:
230922赵云
3、实现功能
对象名.方法名()
举例如下:
package demo;
public class Demo01 {
public static void main(String[] args) {
//创建一个学生对象
Student s1 = new Student();
s1.id = 230922;
s1.name = "赵云";
s1.age = 18;
s1.sex = '男';
s1.study();
s1.playGame();
}
}
代码运行结果:
【赵云】好好学习
【赵云】玩游戏
五、方法的重载
定义:出现在同一个类型中,方法名相同,参数列表不同。
参数列表不同(满足其一即可):1.参数数量不同。 2.参数数据类型不同。3.参数顺序不同。
与返回值无关。
//构造方法 空参构造
public Student() {
//初始化数据的代码
id =1 ;
name = "张三";
}
//构造方法 有参构造
public Student(int a ,String b , int c , char d) {
id = a;
name = b;
age = c;
sex = d;
}
六、对象和数组的结合
(一)对象中存数组
1、在类的成员属性中定义数组的类型
2、在使用的时候,先创建数组,再赋值(不能使用简易方法创建静态数组)
3、展示数组内容不需要亲自去打印和拼接,可以考虑编写成员方法,然后使用对象调用方法即可。
(二)数组中存对象
1、数组中存整数 int[]
2、数组中存字符串 String[]
3、对象数组 类名[] 如:Student[]