一. 面向对象的初步认知
1.1 什么是面向对象
1.2 面向对象与面向过程
面向过程:
传统洗衣服过程
面向对象:
现代洗衣服过程:
整个洗衣服过程:人把衣服放进洗衣机,倒入洗衣粉到洗衣机,启动洗衣机。衣服便总动洗好
总共分为四步,整个过程都是由这四个对象交互完成,不需要管它如何实现洗衣服这些过程,更注重结果
总共四个对象:人,衣服,洗衣机,洗衣服
以面向对象方式来进行处理,就不关注洗衣服的过程,具体洗衣机是怎么来洗衣服,如何来甩干的,用户不用去关心,只需要将衣服放进洗衣机,倒入洗衣粉,启动开关即可,通过对象之间的交互来完成的。
注意:面向过程和面相对象并不是一门语言,而是解决问题的方法,没有那个好坏之分,都有其专门的应用场景。
二. 类定义和使用
2.1 简单认识类
类是用来对一个实体(对象)来进行描述的,主要描述该实体(对象)具有哪些属性(外观尺寸等),哪些功能(用来干啥),描述完成后计算机就可以识别了。
例如:
比如:洗衣机,它是一个品牌,在Java中可以将其看成是一个类别。
属性:产品品牌,型号,产品重量,外观尺寸,颜色…
功能:洗衣,烘干、定时….
2.2 类的定义格式
// 创建类
class ClassName{
field; // 字段(属性) 或者 成员变量
method; // 行为 或者 成员方法
}
类中包含的内容称为类的成员。属性主要是用来描述类的,称之为类的成员属性或者类成员变量。方法主要说明类具有哪些功能,称为类的成员方法。
class WashMachine{
public String brand; // 品牌
public String type; // 型号
public double weight; // 重量
public double length; // 长
public double width; // 宽
public double height; // 高
public String color; // 颜色
public void washClothes(){ // 洗衣服
System.out.println("洗衣功能");
}
public void dryClothes(){ // 脱水
System.out.println("脱水功能");
}
public void setTime(){ // 定时
System.out.println("定时功能");
}
}
再定义一个狗类:
class Dog {
public String name;
public String color;
public int age;
public void eat() {
System.out.println(name + "吃东西");
}
public void wag() {
System.out.println(name + "摇尾巴");
}
}
注意事项:
三. 类的实例化
3.1 什么是实例化
定义了一个类,就相当于在计算机中定义了一种新的类型,与int,double类似 ,只不过int和double是java语言自带的内置类型,而类是用户自定义了一个新的类型;
3.2 实例化对象
拿上处狗的例子来举例:
注意事项:
类和对象的说明:
1. 类只是一个模型一样的东西,用来对一个实体进行描述,限定了类有哪些成员.
2. 类是一种自定义的类型,可以用来定义变量.
3. 一个类可以实例化出多个对象,实例化出的对象 占用实际的物理空间,存储类成员变量
4. 做个比方。类实例化出对象就像现实中使用建筑设计图建造出房子,类就像是设计图,只设计出需要什么东西,但是并没有实体的建筑存在,同样类也只是一个设计,实例化出的对象才能实际存储数据,占用物理空间
习题:
class myValue1 {
public int val;
}
class myValue2 {
public int val;
}
public class Test {
public static void swap(myValue1 val1,myValue2 val2) {
int tmp = val1.val;
val1.val = val2.val;;
val2.val = tmp;
}
public static void main(String[] args) {
myValue1 val1 = new myValue1();
val1.val = 10;
myValue2 val2 = new myValue2();
val2.val = 20;
System.out.println("交换前");
System.out.println(val1.val);
System.out.println(val2.val);
swap(val1,val2);
System.out.println("交换后");
System.out.println(val1.val);
System.out.println(val2.val);
}
}
四. this引用(重点)
4.1 为什么要有this引用
引用一个例子就明白了:
public class Date {
public int year;
public int month;
public int day;
public void setDate(int y,int m,int d) {
year = y;
month = m;
day = d;
}
public void printDate() {
System.out.println( year + "年" + month + "月" + day + "日 ");
}
public static void main(String[] args) {
Date date = new Date();
date.setDate(2023,11,11);
date.printDate();
}
}
原来:
现在:形参名不小心与成员变量名相同
原因是
4.2 this的使用
this引用指向当前对象(成员方法运行时调用该成员方法的对象),在成员方法中所有成员变量的操作,都是通过该引用去访问。只不过所有的操作对用户是透明的,即用户不需要来传递,编译器自动完成。
this引用的是调用成员方法的对象。
4.3 this引用的特性
五.对象的构造及初始化
5.1 默认初始化
为什么局部变量在使用时必须要初始化,而成员变量可以不用呢?
在程序层面只是简单的一条语句,在JVM层面需要做好多事情,下面简单介绍下:
1. 检测对象对应的类是否加载了,如果没有加载则加载
2. 为对象分配内存空间
3. 处理并发安全问题
比如:多个线程同时申请对象,JVM要保证给对象分配的空间不冲突
所以它们都有默认值
5.2 就地初始化
在声明成员变量时,就直接给出了初始值。
5.3 构造方法(重点)
构造方法(也称为构造器)是一个特殊的成员方法,名字必须与类名相同,在创建对象时,由编译器自动调用,并且在整个对象的生命周期内只调用一次。
构造方法的调用 是在实例化对象的时候
这里就可以对成员变量进行初始化
假如只写了一个构造方法:
假如你创建了一个带参数的构造方法,但这里却调用不带参数的构造方法,就会报错,因为必须使用你创建了那个构造方法,如果没写构造方法,才可以写不带参数的。
或者直接用快捷键alt+insert 想创建几个就可以创建几个
总结:
如有不足之处欢迎补充交流
看到这里的友友们,支持一下博主,来个免费三连,感谢! ! !
原文地址:https://blog.csdn.net/chaodddddd/article/details/134340019
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_14609.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!