【Java编程指南】面向对象(基础),mybatis源码分析百度云

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:xhs1999xhs (备注Java)
img

正文


目录

一、前言

二、类和对象

1.概念

2.定义

3.构造

4.总结

三、内存图

1.编码实现

2.输出结果

3.原理讲解

四、构造器

1.概念

2.样例

五、this关键字

1.概念

2.样例

六、封装

1.概述

2.步骤

3.总结

七、标准类

1.问题分析

2.编码实现

3.输出结果

附录


一、前言

  • 学习概述:从本章开始,正式进入到java面向对象的学习,主要学习设计类和对象、内存图、构造器、this关键字、封装、标准类
  • 学习目标:两个重点获取已有对象、自己设计对象使用

二、类和对象

1.概念
  • 前11天我们学习了Java的基础语法,今天我们正式进入java的面向对象编程。
  • 对象:面向对象不是一门技术,大多为一种思想,把现实生活中的小米手机、红旗汽车、歼20…这些现实中具体事务,抽象成一个个对象。
  • 对象的属性:我们上面把手机看作一个对象,小米手机的品牌、价格、外观为对象的属性
  • 对象的行为:对象能够执行的操作,比如小米手机可以打游戏、发短信、浏览CSDN等操作
  • 面向对象:平常我们买手机所筛选的分类、价格、外观等条件的过程,其实就是面向对象
  • :类是具有共同属性行为事物的抽象,比如小米、华为笼统成手机,并没有表明品牌,是java程序的基本组成单位
  • 使用原因:生活中我们解决问题也是按照对象化的方式解决的,java这种编码更加符合我们的思维习惯
2.定义
  • 类由属性和**行为构成,**这部分在代码分别使用成员变量、成员方法表述
public class 类名 { 

    1、成员变量(属性,一般是名词) 
    2、成员方法(行为,一般是动词)
    3、构造器 
    4、代码块 
    5、内部类 
}
  • 构造了一个类之后,如何得到类的对象?如何使用类的变量和方法?
类名 对象名 = new 类名();
访问变量: 对象名.成员变量
访问方法: 对象名.方法名(…)
3.构造

  • 下面定义一个汽车类,并抽象出名称为Maserati、Benz两个对象 c1 c2

Car类

public class Car {
	//定义变量
	String name;
	double price;
	
	//定义方法
	public void start()
	{
		System.out.println(name+"启动了!");
	}
	public void run()
	{
		System.out.println(price+"的"+name+"开跑了!");
	}
}


对象

Car c1=new Car();
Car c2=new Car();
4.总结
  • 关系:类是对象的抽象,对象是类的实体
  • 特点:一个java文件中可以定义多个class,但只能有一个为public修饰(为代码文件名)
  • 命名规则:类名首字母建议大写,尽量用有意义的英文名称,驼峰命名规则

三、内存图

  • 下面,上面的Car类生产了c1、c2对象,下面调用一下类中的方法、变量
1.编码实现
public class Demo {

	public static void main(String[] args) 
	{
		//生成对象 c1
		Car c1=new Car();
		c1.name="Maserati";//设置变量
		c1.price=9.99;
		System.out.println(c1.name);//调用变量
		System.out.println(c1.price);
		c1.start();//调用方法
		c1.run();
		System.out.println("------------");
		//生成对象 c2
		Car c2=new Car();
		c2.name="Benz";
		c2.price=9.99;
		System.out.println(c2.name);
		System.out.println(c2.price);
		c2.start();
		c2.run();
	}
}
2.输出结果
Maserati
9.99
Maserati启动了!
9.99的Maserati开跑了!
------------
Benz
9.99
Benz启动了!
9.99的Benz开跑了!
3.原理讲解

  • 栈内存一般存储局部变量、方法,堆内存存储成员变量、类、数组对象
  • 我们new出来的c1、c2为对象在堆内存的地址,调用类中的变量、方法。java中的自动垃圾回收器会定期清理没有变量引用的对象

四、构造器

1.概念
  • 作用:初始化类的对象,并返回地址。分为无参构造器(默认存在)、有参构造器
2.样例
	//无参构造器	
	public Car(){}
	//带参构造器
	public Car(String n,double p)
	{
		name=n;
		price=p;
	}
  • 任何类初始定义,默认自带无参数构造器
  • 但一旦定义有参构造器,就必须写一个无参的构造了

五、this关键字

1.概念
  • 作用:出现在方法、构造器中表示当前对象的地址,用于访问当前对象的成员变量、成员方法
2.样例

  • 使用this关键字之后,指向更加明确,命名也更加规范

六、封装

1.概述
  • 面向对象的三大特征:封装、继承、多态,今天我们来学习封装
  • 作用:private(私有关键字)隐藏实现细节,同时暴露出合适的访问方式
2.步骤
  • 对成员变量使用private修饰隐藏(只能在本类中访问),构造public getter setter让外部访问
  • Eclipse点击Source->Genearte Getters Setters可以自动创建,构造方法也一样

public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public double getPrice() {
		return price;
	}
	public void setPrice(double price) {
		this.price = price;
	}
3.总结
  • 封装加强了代码的安全性
  • 提升开发效率,让程序更容易理解与维护

七、标准类

  • 满足标准类,需要满足成员变量使用 private 修饰、每一个成员变量对应的get set方法、提供一个无参构造器
  • 下面实现一个标准学生类
1.问题分析
  • 我们定义三个private修饰的变量id、name、age,生成对应的get  set方法
  • 构造带参、无参构造方法、输出变量方法
  • 测试类,传入数据、输出信息
2.编码实现

Student类

public class Student {
	//定义变量
	private int id;
	private String name;
	private int age;
	//无参构造方法
	public Student() {}
	//带参构造方法
	public Student(int id, String name, int age) {
		this.id = id;
		this.name = name;
		this.age = age;
	}
	//封装所有private修饰的变量
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	//输出当前成员信息
	@Override
	public String toString() {
		return "Student [id=" + id + ", name=" + name + ", age=" + age + "]";
	}
}

测试类

public class Demo {

	public static void main(String[] args) 
	{
		//带参构造方法生成对象
		Student s=new Student(10010, "张三", 15);
		//修改年龄
		s.setAge(25);
		System.out.println(s.getAge());//得到修改过后的年龄
		System.out.println(s.toString());//调用方法
		
		System.out.println("------------------");
		//无参构造方法,传入信息
		Student s1=new Student();
		s1.setId(10011);
		s1.setName("李四");
		s1.setAge(26);
		System.out.println(s1.toString());//调用方法
		
	}
}
3.输出结果
25
Student [id=10010, name=张三, age=25]
------------------
Student [id=10011, name=李四, age=26]
  • 构造对象应该优先使用带参构造方法

附录

区别成员变量局部变量
类中位置类中,方法外方法中
初始化值存在默认初始化值无初始化,使用需要赋值
内存位置堆内存栈内存
生命周期
随着对象的创建而存在,随着对象的消

失而消失
|
随着方法的调用而存在,随着方法的运行结束而消失
|
| 作用域 | 看修饰符而定 | 方法内部 |

读者福利

由于篇幅过长,就不展示所有面试题了,感兴趣的小伙伴

35K成功入职:蚂蚁金服面试Java后端经历!「含面试题+答案」

35K成功入职:蚂蚁金服面试Java后端经历!「含面试题+答案」

35K成功入职:蚂蚁金服面试Java后端经历!「含面试题+答案」

更多笔记分享

35K成功入职:蚂蚁金服面试Java后端经历!「含面试题+答案」

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:xhs1999xhs(备注Java)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
| 栈内存 |
| 生命周期 |
随着对象的创建而存在,随着对象的消

失而消失
|
随着方法的调用而存在,随着方法的运行结束而消失
|
| 作用域 | 看修饰符而定 | 方法内部 |

读者福利

由于篇幅过长,就不展示所有面试题了,感兴趣的小伙伴

[外链图片转存中…(img-2vIQCjbJ-1713615743695)]

[外链图片转存中…(img-vGHghFct-1713615743696)]

[外链图片转存中…(img-iB4bsokM-1713615743696)]

更多笔记分享

[外链图片转存中…(img-os25t9Nv-1713615743697)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:xhs1999xhs(备注Java)
[外链图片转存中…(img-YbiRz9Kd-1713615743697)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 17
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值