类与对象的创建,变量与方法的引用,构造方法,重载其实都很简单
文章目录
面向对象
1.1 Java类及其类的成员
Java中类类的成员有五个,分别是:属性、方法、构造器;代码块、内部类
其中最重要的是前三个
1.2 面向对象的三大特征
封装性、继承性、多态性
一、面向对象和面向过程
1.什么是对象
对象:一切万物皆对象
对象是真实存在的事物
2.如何理解面向对象
- 面向对象POP
- 面向对象是指宏观上,以对象的关系来分类,面向对象先对整体关系进行分类然后通过细节实现
- 把这问题抽象出来三个类:人类、冰箱类、大象类
- 人有打开冰箱门、装大象、关冰箱门的功能
- 冰箱有开启和关闭的功能
- 大象有进入冰箱的功能
- 三个类之间互相调用彼此的功能共同处理问题
- 从这个例子我们可以打出两者的不同
3.如何理解面向过程
- 面向过程OPP
- 面向过程是细节上的过程, 分析出解决问题的所要的步骤,然后在一步一步解决出来
- ① 打开冰箱门
② 把大象装进冰箱
③ 关闭冰箱门
4.联系
- 面向过程:强调的是功能行为,以函数为最小单位,强调怎么做
- 就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。
- 面向对象:强调具备了功能的对象,以类\对象为最小单位,考虑谁来做
- 是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。
4 两者之间的关系
- 面向过程适合处理简单的事情,直接关注流程,简单有效。
- 面向对象适合处理复杂的事情,先使用面向对象的方式对整体关系作出分类,然后,根据不同的类深入细节的处理。
- 面向对象无法取代面向过程,他们是相辅相成的。面向对象关注于从宏观上把握事物之间的关系,在具体到如何实现某个细节时,仍然采用面向过程的思维方式。面向对象如果离开了面向过程,就无法实现真正的落地,成为无源之水。
二、类与对象
1.什么是类
- 类是一个模板,是对同一类事物的属性和行为的集合
eg: 人类 - 他们有具体的特性
eg:人都能吃饭学习等
2.类的结构
- 成员(变量)
事物属性的描述
上面说的人的年龄、性别、名字,这都是判断类中成员的属性。
eg:
一类青少年,那就是年龄较小的一类人- 成员变量的创建
[访问权限修饰符] [修饰符] String name [ = defaultValue];
-
方法
事物的行为
eg:
上面说的人类,他们能做什么,能吃饭,能学习 -
发现类的方法
public [修饰符]/void start(){
eg:System.out.println("汽车开始启动");
return 返回值
}
3.类的定义
public 访问全系的修饰符
final/abstract 这个可有可无,属于修饰符
class 关键词用class来定义一个类
Car 类名
public class Car {
}
4.对象
- 类是一个模板,那对象就是一个客观存在的事物
类是广泛的;
而对象是单独纯在的; - 对象的创建和使用
Car x1 = new Car();
- 创建对象的注释
- Car x1 :使用Car类型的一个变量x1,也可以称为x1是对象.
- new Car() :Car类构造方法创建对象
- = 将右边创建对象的地址赋给左边x1变量
- 注:
使用x1变量访问对象中的成员变量和成员方法.
同一类的每个对象有不同的成员变量存储空间。
同一类的每个对象共享该类的方法。
5.总结
- 类是一类事物的抽象概念,是一个模型.
- 对象是由这个模型所创造的一个个具体存在的,实实在在存在的实例.
- 所以创建对象的过程也叫实例化对象.
- 现实生活中先有对象后有类 因为类是对对象的一种描述,统称
- 而编程时先设计类后创建对象. 因为类是模板,所以只有创建类后,才能创建对象.
- 所以创建对象的过程也叫实例化对象.
三、变量
按照位置变量分为:成员变量,局部变量
1.成员变量
-
成员变量是定义在类中,方法体之外的变量。
-
成员变量可以使用Java语言中任何一种数据类型(包括基本类型和引用类型)。
-
在定义成员变量时可以对其初始化,如果不对其初始化,Java使用默认的值对其初始化。
-
成员变量在创建对象的时候会从类中复制一份到对象中。
-
成员变量可以被类中方法、构造方法和特定类的语句块访问。
-
成员变量的作用范围为整个类体。
public class Car {
String name;
String color;
float price;
String b;
}
2.局部变量:
- 在方法、构造方法或者语句块中定义的变量被称为局部变量。
- 局部变量可以使用Java语言中任何一种数据类型(包括基本类型和引用类型)。
- 局部变量在使用前必须初始化赋值。
- 变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。
四、方法
1.成员方法:
- 成员方法是定义在类中。
- 这种方法在创建对象的时候创建。
- 语法格式:
修饰符 返回值类型 方法名 ( 参数列表) {
方法体语句;
[return 返回值]
}
public class Car {
public void Begin(){
System.out.println("汽车开始启动");
}
public void Stop(){
System.out.println("汽车开始停止");
}
public void Stop(String n){
System.out.println("汽车开始匀速跑");
}
public void Stop(int a , String n){
System.out.println("汽车开始飞奔");
}
}
2.构造方法:
- 用来创建对象的方法
- 构造方法名与类名相同,没有返回值,不需要void返回;
- 构造方法没写时,默认无参构造方法
- 构造方法编写时,无默认无参构造方法
- 构造方法是定义在 Java 类中的一个用来创建对象的方法。
- 一个类可以有多个构造方法
public class Car {
String name;
String color;
float price;
String b;
public Car(){
System.out.println("构建一个无参构建方法");
}
public Car(String n){
name = n;
System.out.println(n);
System.out.println("构建一个有一个参的构建方法");
}
public Car(String n,String c){
name = n;
color = c;
System.out.println(n+c);
System.out.println("构建一个有俩个参的构建方法");
}
怎么说呢,我们可以在类中定义有参的构造方法,一旦定义,无参的就会失效,一个类中可以有多个构造方法,通过引用和参数来区分.
3.重载
- 就是一个类里面,有多个名字相同的但参数不同方法,方法的重载与方法的返回值类型没有任何关系,
如何区别方法的重载- 参数不同(可以有三方面的不同)
- 数量不同
- 类型不同
- 顺序不同
- 调用时,会根据不同的参数对应不同的方法。
4.对象与调用
int a = 10;
int b = a;//值传递,基本的数据直接传递给其他变量
- java的对象是通过调用实现的
Car x1 = new Car();- Car x1 使用Car类型的一个变量x1
- 所谓Car类的引用,就是以后可以用想x1来指向Car对象的对象引用。
- new Car() Car类构造方法创建对象
- = 将右边创建对象的地址赋给左边x1变量
代码如下
package day1;
public class Car {
String name;
String color;
float price;
String b;
public Car(){
System.out.println("构建一个无参构建方法");
}
public Car(String n){
name = n;
System.out.println(n);
System.out.println("构建一个有一个参的构建方法");
}
public Car(String n,String c){
name = n;
color = c;
System.out.println(n+c);
System.out.println("构建一个有俩个参的构建方法");
}
public void Begin(){
System.out.println("汽车开始启动");
}
public void Stop(){
System.out.println("汽车开始停止");
}
public void Stop(String n){
System.out.println("汽车开始匀速跑");
}
public void Stop(int a , String n){
System.out.println("汽车开始飞奔");
}
public void Al(String a){
b = "a";
System.out.println(a);
}
public String Xy(String a){
b = "a";
System.out.println(a);
return b;
}
}
package day1;
public class Nextcar {
public static void main(String[] args) {
Car bc = new Car();
bc.name = "奔驰";
bc.color = "蓝色";
bc.price = 100000;
bc.Begin();
bc.Stop();
System.out.println(bc.name+":"+bc.color+":"+bc.price);
Car bm = new Car();
bm.name = "宝马";
bm.color = "绿色";
bm.price = 500000;
bm.Begin();
bm.Stop();
System.out.println(bm.name+":"+bm.color+":"+bm.price);
Car dz = new Car("大众");
Car lx = new Car("联想","白色");
System.out.println(lx.name+lx.color);
lx.Al("d");
lx.Stop("");
lx.Stop(1,"");
lx.Xy("z");
}
}