学习目标:
掌握面向对象的思想和相关知识学习内容:
1、 面向过程和面向对象的设计思想 2、 Java类 3、 Java对象 4、 变量分类 5、 方法分类 6、 构造方法学习时间:
1、 2021年4月11日学习产出:
1、 技术笔记 1 遍 2、CSDN 技术博客 1 篇面向过程和面向对象的设计思想
面向过程:
procedure oriented programming 缩写 POP
- 分析出解决问题所需要的步骤,然后把步骤一步一步实现
- 面向过程直接关注流程。
面向对象:
object oriented programming 缩写 OOP面向对象的编程语言
- 以分类的方式进行思考和解决问题。
- 面向对象先对整体关系作出分类,然后根据不同的类深入细节的处理。
- 面向对象的思想符合人类的认知习惯。
面向对象无法取代面向过程,他们是相辅相成的。面向对象关注于从宏观上把握事物之间的关系,在具体到如何实现某个细节时,仍然采用面向过程的思维方式。面向对象如果离开了面向过程,就无法实现真正的落地,成为无源之水。
Java类
什么是类
类是一个模板,它描述一类事物的属性(名词)和行为(动作)的集合。
类是表示一个客观世界某类群体的一些基本特征抽象。
比如:车类 狗类 鸟类
类的结构:
- 成员变量:事物属性的描述
- 方法:事物的行为;(可以做的事情)
- 构造方法:用于创建对象;
- 内部类: 即在类体中声明的类。
- 块:一段没有名称的代码块
Java类的定义
第一步,发现类(此处发现狗这一类举例子)
根据不同类型的狗,抽象出狗这一大类的概念
类的声明格式为:
[访问修饰符] [修饰符] class Car{
}
public class Dog {
}
访问修饰符有两种public,无(默认)
修饰符:final,abstract
关键词class用来定义一个类
类名首字母大写
第二步:发现类的公有属性(成员变量)
名词:
狗共有的特征:名字、颜色、年龄等…
声明成员变量格式:
[访问权限修饰符] [修饰符] type name [=defaultValue]
String name;
String colour;
int age;
第三步:发现类的方法
动词:
狗共有的行为:叫、跑、吃饭…
成员方法 类的行为(动词)
[访问权限修饰符] [返回值类]/void 方法名(参数类型 参数名){
System.out.println(“小狗吃饭”);
[return 返回值;]
}
public void speak(String a){
System.out.println(a+"汪汪汪");
}
public void run(){
System.out.println("小狗跑步");
}
public void eat(){
System.out.println("小狗吃饭");
}
Java对象
对象
对象是类的一个实例,是以类为模板在内存中创建的实际存在的实例
对象的创建和使用
使用new关键字来创建对象 new Dog 创建Dog类的对象
Dog()使用类的构造方法初始化类
Dog xb声明一个与构造方法名称相同类型的变量
= 把在内存中对象存储的地址赋值给左边的xb对象
使用xb变量访问对象中的成员变量和成员方法
- 同一类的每个对象有不同的成员变量存储空间
- 同一类的每个对象共享该类方法
Dog xb = new Dog();
xb.name = "小白";
xb.colour = "white";
xb.age = 3;
xb.run();
xb.speak();
xb.eat();
类和对象总结
类是一类事物的抽象概念,是一个模型。对象是由这个模型所创造的一个个具体存在的,实实在在存在的实例.。
所以创建对象的过程也叫实例化对象。
现实生活中先有对象后有类,而编程时先设计类后创建对象。
变量分类
按照数据类型分
- 基本数据类型:byte,short,int,long,float,double,boolean,char
- 引用数据类型:类,数组,接口…
按照位置变量分
-
成员变量:成员变量是定义在类中,方法体之外的变量。
成员变量可以使用Java语言中任何一种数据类型(包括基本类型和引用类型)。
在定义成员变量时可以对其初始化,如果不对其初始化,Java使用默认的值对其初始化。
成员变量在创建对象的时候会从类中复制一份到对象中。
成员变量可以被类中方法、构造方法和特定类的语句块访问。
成员变量的作用范围为整个类体。
-
局部变量:在方法、构造方法或者语句块中定义的变量叫做局部变量
局部变量可以使用Java语言中任何一种数据类型(包括基本类型和引用类型
局部变量在使用前必须初始化赋值
变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。
方法分类
成员方法
(非static修饰的) 被对象调用.。 完成对象的功能(行为) 定义在类中
语法格式:修饰符 返回值类型 方法名(参数列表){
方法体语句;
[return 返回值]}
构造方法
用来初始化对象的方法
-
构造方法名与类名相同,且没有返回值,且不需要使用void修饰。
-
作用:在构造方法中为创建的对象初始化赋值
-
在创建一个对象的时候,至少要调用一个构造方法
-
每个类都有构造方法。如果没有显式地为类定义构造方法,Java将会为该类提供一个默认构造方法,但是只要在一个Java中定义了一个构造方法后,默认的无参构造方法即失效。
方法重载
方法的重载是指同一个类中具有相同的名字,但参数不同的多个方法。
参数不同主要指三个方面:
- 数量不同(0,1,2…)
- 类型不同
- 顺序不同
public Dog(){//无参构造方法
}
public Dog(int a){//一个参数的构造方法
age = a;
}
public Dog(int a,String n){//两个参数的构造方法
age = a;
name = n;
}
public Dog(String n,int a){//两个参数但是顺序不同的情况
age = a;
name = n;
}
public Dog(String n,String c){//两个参数但是数据类型不同的情况
name = n;
colour = c;
}
public Dog(int a,String n,String c){//三个参数的构造方法
age = a;
name = n;
colour = c;
}
在调用时会根据不同的参数表选择对应的方法。
Dog xh = new Dog(3,"小黑");
System.out.println(xh.name+" "+xh.age+"岁");
Dog xm = new Dog("小明",3);
System.out.println(xm.name+" "+xm.age+"岁");
注意:方法重载跟方法的返回值类型没有任何关系