一:面向对象思想
1.1:面向过程思想
一步一步的完成某个需求。这些步骤是我们要完成的。侧重于过程。
代表性语言:C语言
1.2:面向对象思想—指挥对象做事情
面向对象是基于面向过程的。
关注完成功能的类。侧重于结果。
代表性语言:Java语言
1.3:面向对象思想特点
面向对象是基于面向过程的编程思想
A:是一种更符合我们思想习惯的思想
B:可以将复杂的事情简单化
C:将我们从执行者变成了指挥者
二:类与对象
2.1:我们学习编程语言,就是为了模拟现实世界的事物,实现信息化。
2.2:我们是如何描述现实世界的事物的呢?
属性 就是该事物的描述信息(举例,人,汽车)
行为 就是该事物能够做什么(举例,人,汽车)
例如:
人:(类)
属性:姓名,性别,年龄
行为:吃,睡,学习
2.3:类与对象
我们学习的Java语言最基本单位是类,所以,我们就应该把事物用一个类来体现。
类:是一组相关的属性和行为的抽象
对象:是该类事物的具体体现。(实例)
三:类的定义
3.1类是用来描述现实世界事物的。
事物:
属性 特征
行为 功能
类:
成员变量 特征
成员方法 功能
类的组成:
成员变量 类中方法外的变量
成员方法 没有static修饰的方法
3.2成员变量和局部变量的区别?
A:在类中的位置不同
成员变量 类中方法外
局部变量 方法内或者方法声明上
B:在内存中的位置不同
成员变量 堆内存
局部变量 栈内存
C:生命周期不同
成员变量 随着对象的存在而存在,随着对象的消失而消失
局部变量 随着方法的调用而存在,随着方法的调用完毕而消失
D:初始化值
成员变量 有默认初始化值
局部变量 没有默认初始化值
四:类的使用
4.1 一个文件一个类
4.2我们要想想用一个类的成员,就必须创建该类的对象。如何创建类的对象呢?
格式:
类名 对象名 = new 类名();
就表示创建了该类类型的一个对象
如何使用成员呢?
成员变量:
对象名.变量;
成员方法:
对象名.方法名(…);
4.3定义一个学生类,并在Test类中进行测试:
package com.edu_05;
public class Student {
//学生的成员变量(类中方法外)
String name;
int age;
//成员方法(没有static修饰)
public void eat(){
System.out.println("学生爱吃米饭");
}
public void study(){
System.out.println("吃饱了该学习了");
}
public void makePlane(){
System.out.println("学生会制造飞机模型");
}
}
同包下,新建Test类,对Student类进行测试:
package com.edu_05;
/**
* 一个文件一个类
*/
public class Test {
public static void main(String[] args) {
//创建一个学生对象
//类名 对象名 = new 类名();
Student s = new Student();
/**
* 想使用一个类,必须先创建该类的一个对象
* 一旦new了一个对象(如Student s = new Student();)
* 就会直接在堆内存中开辟空间
*/
//打印一下这个学生对象的姓名和年龄
System.out.println(s.name);//null
System.out.println(s.age);//0
//给学生对象的姓名和年龄赋值
s.name = "张三";
s.age = 50;
System.out.println(s.name);//张三
System.out.println(s.age);//50
//试用一下学生的成员方法
s.eat();
s.makePlane();
s.study();
}
}
五:形式参数问题
数据类型:基本类型:4类8种。byte,short,int,long,float,double,char,boolean
基本类型实际参数传递的时候传递的是这个基本类型的具体的值
引用类型:类,接口,数组
引用类型进行参数传递的时候,传递的是该引用类型的(实例对象)说白了就是这个对象的地址值
六:匿名对象:就是没有名字的对象、是对象一种简写形式。
应用场景:
A:调用方法(对象调用方法仅仅一次的时候)
B:作为实际参数传递
package com.edu_09;
class Student{
public void show(){
System.out.println("student的show方法");
}
}
class StudentDemo{
public void method(Student s){
//需要的实际参数一定是Student类的对象的的地址值
s.show();
}
}
public class StudentTest {
public static void main(String[] args) {
//我现在需要调用StudentDemo中的method()方法
//使用匿名对象调用方法,并传递参数
new StudentDemo().method(new Student());
}
}