《类和对象》
面向过程:面向方法,面向函数,结构化方法。
代码是由顺序的,需要什么功能就编写什么功能。
我们前期语法阶段将吃货联盟代码全部放在main方法中,之后等我们学了方法,就会把吃货联盟稍微用正式的面向过程改造一下...(按照功能聚合到对应方法中)
面向对象:( OOP) 他是基于面向过程产生的一种更复杂的编程思想/编程方式。
执行顺序不固定。
(有难度,不是简单就能运用的)
Java是不完全的面向对象,Python面向对象,C#面向对象,C++面向对象,PHP也是面向对象的编程语言。
面向对象是项目复杂化,规模化的必然产物。
比例:自己做一件事,自己所准备的这件事的过程叫面向过程
专门专事的去做这件事的过程叫面向对象=
一、对象的概念
1.Java是一门不完全的面向对象的编程语言:OOP(Object Orientide Programming)
2.对象,即Object,一切皆为对象,万物皆为对象
3.不同的人分析物体的角度不同
1.同样是一辆车
2.不同的人分析的角度不一样(化学家/画家/修理工)
4.Java主要是对物体进行分类,对着一类物体进行归纳
我们在描述生活中的一个个对象时通常都会采用特征+行为的方式。
5.归纳的角度有 两个:
1.状态/特征(名词)体重5kg---> 属性--->变量
2.动作/行为(名词)跑,跳---->方法---->函数
对象的概念:用来描述客观事物的一个实体,有一组属性和方法构成。
二、类的编写
生活中的类
我们在看到一群对象/实体时,会下意识进行分类(人类认识事物的必然过程)。“物以类聚,人以群分”
学生(类别),人类,哺乳类,爬行类,猫科类,灵长类.....
类(类别):他是一个抽象的概念,他是从一群对象中抽取共性的特征和行为产生的一个概念。没有办法具体拿某个对象来表示某个类别,因为对象只是类的一个个体。
生活中类和对象的关系:类是一个模板,对象是类的一个个体,。
程序中的类和对象
Java是一个不完全的面向对象的编程语言。
它以类(引用数据类型)为基本单位,被class修饰的。
1.类的语法:
public class 类名{ //程序中的类和对象都是从生活中抽象而成的,
//你在现实中如何描述它们,程序中也是。
//定义属性部分
属性1的类型 属性1
... //1.此类的相关属性(成员变量/字段)
属性n的类型 属性n;
//定义方法部分
方法1;
... //2.此类的相关方法(成员方法/函数)
方法m;
}
定义一个学生:
public class cellphone{
//相关属性
颜色
品牌
营业商
4G
//相关方法
打电话
玩游戏
发短信
看视频
}
定义学生类:
public class Student {
// 一组属性(成员变量)
/** 学生姓名 */
public String stuName;
/** 学生编号 */
public int stuNo;
/** 学生班级 */
public int classId;
/** 学生专业 */
public String major;
/** 学生性别 */
public char gender;
/** 学生年龄 */
public int age;
/** 学生成绩 */
public double score;
// 一组方法(成员方法)
// public static void main(String[] args){}
/**
* 学习方法
*/
public void study() {
System.out.println(major+"专业的"+classId+"班级的"+stuName+"正在好好学习!");
}
/**
* 自我介绍
*/
public void showMyself() {
System.out.println("姓名:"+stuName);
System.out.println("班级:"+classId);
System.out.println("专业:"+major);
System.out.println("性别:"+gender);
System.out.println("年龄:"+age);
System.out.println("成绩:"+score);
System.out.println("学号:"+stuNo);
}
}
2.类名首字母大写,通常都是名词
3.属性的本质就是声明变量,也叫成员变量,属于类的成员
4.属性可以设置值,相当于变量可以复制
5.方法本质就是函数,在Java中叫法不同而已,想想main函数
6.方法的基本结构
访问修饰符 返回值类型 方法名(参数列表){//方法声明
//方法主体
}
//Arrays.toString(参数); 将数组转换为字符串
public void(表示没有返回值) sayHello(){
System.out.println("hello");
}
功能代码的存储空间,以后使用可以复用。
7.一个类中可以有多个属性和多个方法
8.属性和方法的编写顺序没有要求,单通常会将属性写在上面
9.属性和方法通常采用骆驼命名法命名:
1.骆驼命名法Camel:第一个字母小写,后面每个单词首字母大写
showCenter userName
2.帕斯卡命名法Pascal:每个单词的首字母都大写
ShowCenter UserName
10.编写一个Student类,有姓名和年龄两个属性,以及一个sayHello()方法
三、创建和使用对象
1.类其实就是一个模板,类的作用就是创建对象
2.由类来创建对象
1.此过程称为实例化
2.一个实例就是一个对象
3.一个类可以创建多个对象
4.创建对象需要用到new关键字,表示新建,创建
5.语法:
类名 对象名 = new 类名();
Student stu = new Student();//基于Stdent模板创建了一个个体/对象
Scanner input = new Scanner();
3.通过点号操作符访问对象的属性和方法
调用属性:对象名.属性名 = xxx ;// 赋值
对象名.属性名
调用方法:
对象名.方法名()
public class Test{
public static void main(String[] args){
//根据类模板产生对象
//创建对象(对象名的命名规范和变量名一致)
Student chenXU = new Student();
Student shr = new Student();
// 操作/调用属性
shr.stuName = "史浩然";
shr.classId = 335;
shr.major = "电竞俱乐部厕所打扫官";
chenXu.stuName = "陈旭";
chenXu.classId = 335;
chenXu.major = "建筑学";
chenXu.gender = '男';
chenXu.stuNo = 9527;
chenXu.age = 12;
// 操作/调用方法 input.nextInt();
chenXu.showMyself();
chenXu.study();
// shr.study();
// shr.showMyself();
System.out.println(shr.stuName+"的专业是:"+shr.major);
}
}
1.stu.name = "zhangsan"; //给name属性赋值
2.stu.sayHello() //调用stu对象的sayHello()方法
4.如果类的属性没有赋初始值,则会有默认值:
1.double / int / float == > 0
2.String == > null
3.boolean == > false
4.char == >'\u0000'
5.以Student类为例子,实例化并调用对象的属性和方法
6.面向过程/方法/函数,结构化方法
方法:是功能,是一系列代码的聚合,也可以理解为一个魔术箱。
四、对象和类的关系
1.类是对象的类型
2.对象是实实在在的某一个物体,而类是一个统称,是一个类型(类别)
1.有困难找警察
2.小张去吧黑板擦干净
3.面向对象的优点:
1.与人类的思维习惯一致,更加生活化
2.通过封装,实现信息隐藏,提高了程序的可维护性和安全性
类里面封装了属性和方法
3.提高了程序的可重用性
一个类可以创建多个对象,可以不断重用