当前位置:   article > 正文

2024年最新JAVA 面向对象 类 对象 封装,并发的线程入门到并发安全原理解析

2024年最新JAVA 面向对象 类 对象 封装,并发的线程入门到并发安全原理解析

最后

由于篇幅有限,这里就不一一罗列了,20道常见面试题(含答案)+21条MySQL性能调优经验小编已整理成Word文档或PDF文档

MySQL全家桶笔记

还有更多面试复习笔记分享如下

Java架构专题面试复习

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

Java把内存分成5大区域,我们重点关注栈和堆。

  1. 一般来讲局部变量存在栈中,方法执行完毕内存就被释放

  2. 对象(new出来的东西)存在堆中,对象不再被使用时,内存才会被释放

  3. 每个堆内存的元素都有地址值

  4. 对象中的属性都是成员变量,是有默认值的

TIPS: 栈与队列指的是一种数据的结构。

栈:先进后出(FILO – First In Last Out)

队列:先进先出(FIFO – First In First Out)

在这里插入图片描述

在这里插入图片描述

对象的创建过程分析:


Phone p = new Phone(); 这句代码,再内存中会发生什么呢?

1.在栈内存中开辟一块空间,存放引用类型Phone类型的变量p

2.在堆内存中开辟一块空间,存放Phone类型的对象

3.要给这个对象进行初始化,比如:String brand = null;

4.当对象准备好以后,会生成一个唯一的地址值,然后将此地址值交给引用类型的变量p来保存

5.如果以后想要操作此对象的各种资源,可以通过p变量保存的地址值找到该对象,比如:p.call(); p.price = 66.6;

在这里插入图片描述

3.6 练习2:创建多个对象


package cn.tedu.oop;

/**本类用作面向对象入门案例

  • 设计手机这一类事物:

  • 分析属性:品牌 价格 尺寸 颜色

  • 分析功能:打电话 发短信 看直播*/

/**在一个java文件中可以写多个class`,但是,被public修饰的class只能有一个

  • 而且要求这个公共类的名字必须与文件的名字保持一致*/

public class TestCreateClass {

public static void main(String[] args) {

//help-findAction 或者 Alt+7

//4.创建手机类的对象p1

Phone p1 = new Phone();

//5.通过手机类对象调用手机类的功能

p1.call();

p1.message();

p1.video();

//6.通过手机类对象打印查看属性值

System.out.println(p1.color);//null

System.out.println(p1.price);//0.0

System.out.println(p1.size);//0.0

System.out.println(p1.brand);//null

//7.创建手机类的第2个对象p2

Phone p2 = new Phone();

//8.通过p2对象,调用Phone类的3个方法

p2.call();

p2.message();

p2.video();

//9.给p2对象的4个属性赋值

p2.brand = “HUAWEI”;

p2.color = “中国红”;

p2.price = 6666.66;

p2.size = 5.6;

//10.打印查看p2对象的4个属性值

System.out.println(p2.brand);

System.out.println(p2.price);

System.out.println(p2.color);

System.out.println(p2.size);

//11.查看两个对象的地址值

System.out.println(p1);//cn.tedu.oop.Phone@1b6d3586

System.out.println(p2);//cn.tedu.oop.Phone@4554617c

}

}

//1.通过class关键字创建手机类–用来描述手机这一类事物–属性+功能

class Phone{

//2.定义手机类的属性–用成员变量来描述–位置:类里方法外

String brand;//品牌

double price;//价格

double size;//尺寸

String color;//颜色

//3.定义手机类的功能–用方法来描述–格式:修饰符 返回值类型 方法名(参数列表){方法体}

public void call(){

System.out.println(“正在打电话~”);

}

public void message(){

System.out.println(“正在发短信!”);

}

public void video(){

System.out.println(“正在看直播~”);

}

}

在这里插入图片描述

p2.brand = “HUAWEI”;

就是先到栈内存中找到p2中保存的唯一的地址值

然后根据地址值找到对应的Phone对象,并对其对应的属性值进行修改

p2.eat();

也是先到栈内存中找到p2中保存的唯一的地址值

然后根据地址值找到对应Phone对象,执行Phone对象的eat()方法

4 封装

==========================================================================

4.1 概述


封装是隐藏对象的属性和实现细节,仅仅对外提供公共的访问方式,比如类和方法

好处:

  1. 提高安全性

  2. 提高重用性

4.2 private关键字


是一个权限修饰符 ,可以用来修饰成员变量和成员方法.被私有化的成员只能在本类中访问

4.3.1练习:封装的必要性


创建包: cn.tedu.oop

创建类: TestPrivate1.java

package cn.tedu.oop;

/本类用于测试封装的必要性/

public class TestPrivate1 {

public static void main(String[] args) {

//3.创建用户类的对象

User u = new User();

//4.修改对象的属性值

u.name = “李逵”;

/需要封装属性,如果不封装的话,就可以直接修改属性的值,不安全/

//u.money = 999999999;

//5.查看修改后的属性值

System.out.println(u.name);

//System.out.println(u.money);

//6.4调用两个方法修改和查看属性值

u.setMoney(8888888.88);

System.out.println(u.queryMoney());

}

}

//1.创建一个用户类User

class User{

//2.定义用户类的属性

String name;

//6.1封装属性–通过private关键字封装属性

private double money = 10000;

//6.2提供方法1:查询当前账户的余额

public double queryMoney(){

/后续可以添加权限校验的操作/

return money;

}

//6.3提供方法2:修改当前账户的余额

public void setMoney(double money){

/后续可以添加权限校验的操作/

/*当本类的成员变量与局部变量同名时

可以使用this关键字指定本类的成员变量*/

this.money = money;

}

}

4.3.2 练习:封装学生案例


创建包: cn.tedu.oop

创建类: TestPrivate2.java

package cn.tedu.oop;

/本类用于练习OOP的第一大特性:封装/

public class TestPrivate2 {

public static void main(String[] args) {

//4.创建学生类对象s

Student s = new Student();

//5.通过对象修改并查看属性值

s.sno = 1;

//s.name = “黄飞鸿”;

//s.subject = “Java培优”;

System.out.println(s.sno);

//System.out.println(s.name);

//System.out.println(s.subject);

//6.通过对象调用方法

s.study();

s.eat();

s.sleep();

//7.3使用刚刚生成的set()设置值方法与get()获取值方法

s.setName(“十三姨”);

s.setSubject(“美容美发”);

System.out.println(s.getName());

System.out.println(s.getSubject());

}

}

//1.定义类描述学生这一类型Student

class Student {

//2.特征:学号sno 姓名name 科目subject

//7.1 封装属性–用private修饰属性

int sno;

private String name;

private String subject;

//7.2提供被封装属性的get与set方法

//右键->Generate->Getter and Setter->Shift选择属性->OK

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getSubject() {

return subject;

}

public void setSubject(String subject) {

this.subject = subject;

}

//3.定义学生的功能:学习 吃饭 睡觉

public void study() {

System.out.println(“正在学习中…”);

}

public void eat() {

System.out.println(“吃饭ing…”);

}

public void sleep() {

System.out.println(“我一点也不想睡觉,就想学Java!”);

}

}

4.3.3 练习:封装方法测试


创建包: cn.tedu.oop

创建类: TestPrivate3.java

package cn.tedu.oop;

/本类用于测试方法的封装/

public class TestPrivate3 {

public static void main(String[] args) {

//4.创建对象测试

Apple a = new Apple();

//5.没有封装方法时,调用没有限制

//a.eat();//封装eat(),此处调用报错

a.clean();

}

}

//1.创建苹果类

class Apple{

//2.定义方法1

public void clean(){

System.out.println(“苹果还是要洗洗的~”);

//6.在已有的公共方法clean()中调用被封装eat()方法的功能

eat();

}

//3.定义方法2

private void eat(){

System.out.println(“要吃苹果啦~”);

}

}

TIPS:如何封装?封装后的资源如何访问?

我们可以使用private关键字来封装成员变量与方法

如何访问私有资源?

关于成员变量:

setXxx – 对外提供公共的设置值方式

getXxx – 对外提供公共的获取值方式

关于成员方法:

把私有方法放在公共方法里供外界调用即可

5 拓展:OOP综合练习

==================================================================================

创建包:cn.tedu.oop

创建类:TestCar

package cn.tedu.oop;

/本类用于面向对象的巩固练习/

public class TestCar {

//创建程序的入口函数main()

public static void main(String[] args) {

//3.创建汽车类对象c

Car c = new Car();

//4.通过汽车类对象c设置属性值

// c.color = “暗夜紫”;

// c.brand = “BMW”;

// c.price = 200;

// c.length = 0.2;

//5.查看刚刚设置好的属性值

// System.out.println(c.brand);

// System.out.println(c.price);

// System.out.println(c.color);

// System.out.println(c.length);

//6.通过c对象调用汽车类的方法

c.start();

//c.stop();

//7.3调用提供的set与get方法,设置并获取对应属性的值

c.setBrand(“特斯拉”);

最后

小编在这里分享些我自己平时的学习资料,由于篇幅限制,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!

开源分享:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】

程序员代码面试指南 IT名企算法与数据结构题目最优解

这是” 本程序员面试宝典!书中对IT名企代码面试各类题目的最优解进行了总结,并提供了相关代码实现。针对当前程序员面试缺乏权威题目汇总这一-痛点, 本书选取将近200道真实出现过的经典代码面试题,帮助广“大程序员的面试准备做到万无一失。 “刷”完本书后,你就是“题王”!

image.png

《TCP-IP协议组(第4版)》

本书是介绍TCP/IP协议族的经典图书的最新版本。本书自第1版出版以来,就广受读者欢迎。

本书最新版进行」护元,以体境计算机网络技不的最新发展,全书古有七大部分共30草和7个附录:第一部分介绍一些基本概念和基础底层技术:第二部分介绍网络层协议:第三部分介绍运输层协议;第四部分介绍应用层协议:第五部分介绍下一代协议,即IPv6协议:第六部分介绍网络安全问题:第七部分给出了7个附录。

image.png

Java开发手册(嵩山版)

这个不用多说了,阿里的开发手册,每次更新我都会看,这是8月初最新更新的**(嵩山版)**

image.png

MySQL 8从入门到精通

本书主要内容包括MySQL的安装与配置、数据库的创建、数据表的创建、数据类型和运算符、MySQL 函数、查询数据、数据表的操作(插入、更新与删除数据)、索引、存储过程和函数、视图、触发器、用户管理、数据备份与还原、MySQL 日志、性能优化、MySQL Repl ication、MySQL Workbench、 MySQL Utilities、 MySQL Proxy、PHP操作MySQL数据库和PDO数据库抽象类库等。最后通过3个综合案例的数据库设计,进步讲述 MySQL在实际工作中的应用。

image.png

Spring5高级编程(第5版)

本书涵盖Spring 5的所有内容,如果想要充分利用这一领先的企业级 Java应用程序开发框架的强大功能,本书是最全面的Spring参考和实用指南。

本书第5版涵盖核心的Spring及其与其他领先的Java技术(比如Hibemate JPA 2.Tls、Thymeleaf和WebSocket)的集成。本书的重点是介绍如何使用Java配置类、lambda 表达式、Spring Boot以及反应式编程。同时,将与企业级应用程序开发人员分享一些见解和实际经验,包括远程处理、事务、Web 和表示层,等等。

image.png

JAVA核心知识点+1000道 互联网Java工程师面试题

image.png

image.png

企业IT架构转型之道 阿里巴巴中台战略思想与架构实战

本书讲述了阿里巴巴的技术发展史,同时也是-部互联网技 术架构的实践与发展史。

image.png

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

实用指南。

本书第5版涵盖核心的Spring及其与其他领先的Java技术(比如Hibemate JPA 2.Tls、Thymeleaf和WebSocket)的集成。本书的重点是介绍如何使用Java配置类、lambda 表达式、Spring Boot以及反应式编程。同时,将与企业级应用程序开发人员分享一些见解和实际经验,包括远程处理、事务、Web 和表示层,等等。

[外链图片转存中…(img-QbPryVaI-1715139881038)]

JAVA核心知识点+1000道 互联网Java工程师面试题

[外链图片转存中…(img-WwfrktoN-1715139881039)]

[外链图片转存中…(img-6SKA6bvr-1715139881039)]

企业IT架构转型之道 阿里巴巴中台战略思想与架构实战

本书讲述了阿里巴巴的技术发展史,同时也是-部互联网技 术架构的实践与发展史。

[外链图片转存中…(img-40BLDybl-1715139881039)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/560555
推荐阅读
相关标签
  

闽ICP备14008679号