【Java基础】【狂神说Java】Java零基础学习视频通俗易懂P60-76(OOP)(Day4、5-20210703、04)

《遇见狂神说,Java架构师视频百度云分享 (‘A’,2000.00), (‘B’,10000.00) – 转账实现 SET autocommit = 0; – 关闭自动提交 START TRANSACTION; – 开始一个事务,标记事务的起始点 UPDATE account SET cash=cash-500 WHERE name=‘A’; UPDATE account SET cash=cash+500 WHERE name=‘B’; COMMIT; – 提交事务,数据就被持久化了! rollback; SET autocommit = 1; 阅读详情

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

  1. 同一个包下的类不需要导入就可以使用,不同包下的类,必须导入包才能使用。
  2. static修饰静态方法,静态方法可以通过类名.方法名,进行调用,非静态方法通过这种方式进行调用会报错。
  3. static修饰的内容是和类一起加载的,非静态方法是和对象一起生成的(类实例化之后才存在),所以static方法不能调用非静态方法。
  4. Java是值传递
  5. 一个类里只能有一个public的类
package oop;

public class Student {
    //静态方法 通过类名.方法名 调用
    public static void say(){
        System.out.println("学生说话了");
    }
    //非静态方法
    public void speak(){
        System.out.println("学生讲话了");
    }
}

在这里插入图片描述
在这里插入图片描述

值传递
package oop;
//java是值传递
public class Demo04 {
    public static void main(String[] args) {
        int a=1;
        System.out.println(a);
        test(a);
        System.out.println(a);
    }
    public static void test(int a){
        a=10;
    }
}
引用传递
package oop;

public class Demo05 {
    public static void main(String[] args) {
        Person person = new Person();
        System.out.println(person.name);
        person.name="123";
        System.out.println(person.name);
        change(person);
        System.out.println(person.name);
    }
    public static void change(Person person){
        person.name="000";
    }
}

class Person{
    String name;
}

在这里插入图片描述

  1. 一个项目应该只存在一个main方法
无参构造 有参构造

当没有定义构造器的时候,会自动生成一个无参构造器,
当自定有构造器之后,就不会生成无参构造器,必须显示定义无参构造器
一个类即使什么都不写,也会存在一个方法,即无参构造器
构造器特点及作用

  1. 实例化初始值,初始化对象的值
  2. 使用new关键字,本质是在调用构造器
  3. alt+insert会自动生成构造器
  4. 和类名相同,没有返回值
    在这里插入图片描述

创建对象内存分析

在这里插入图片描述
在这里插入图片描述

面向对象三大特性:封装、继承、多态

封装

在这里插入图片描述
使用private关键字,属性私有,通过get、set方法获取和更改变量内容。
当有多个属性的时候,可以使用alt+insert快捷键组合批量生成get、set方法
【封装的意义】:

  1. 提高程序的安全性,保护数据
  2. 隐藏代码的实现细节
  3. 统一接口
  4. 系统的可维护性增加了

在这里插入图片描述

重载

方法名相同,参数列表不同

继承

*** 经过final修饰的类就不能被继承了,即:没有子类了
在这里插入图片描述
子类继承了父类,就会拥有父类的全部方法,私有的除外,私有的可以被被继承,但是不能直接访问到。

在这里插入图片描述将光标放在类内,配合ctrl+H会在右侧打开继承树。
在Java中,所有的类都默认直接或者间接继承Object类
Java中只有单继承,没有多继承。

super

  1. super调用父类的构造方法,必须在构造方法的第一个
  2. super只能出现在子类的方法或者构造方法中
  3. super和this不能同时调用构造方法
super VS this
  1. 代表的对象不同:this代表本身调用者这个对象 super代表父类对象
  2. this没有继承也可以使用,super只有在继承的条件下才能使用

环境准备
在这里插入图片描述【Person.java】

package oop.demo05;

//Person 是 人
public class Person {
    public Person() {
        System.out.println("Person无参构造器被执行了");
    }

    private int money= 1000;
    protected String name = "小明";

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Person(int money) {
        this.money = money;
    }

    public int getMoney() {
        return money;
    }

    public void setMoney(int money) {
        this.money = money;
    }

    public void say(){
        System.out.println("说了一句话");
    }
}

【Student.java】

package oop.demo05;
//Student 是 人
public class Student extends Person{
    private String name="xiaoming";

    public Student() {
        System.out.println("Student的无参构造执行了");
    }

    public void test(String name){
        System.out.println(name);
        System.out.println(this.name);
        System.out.println(super.name);
    }
}

【Application.java】

package oop;
import oop.demo05.Student;
public class Application {
    public static void main(String[] args) {
        Student student = new Student();
        student.test("test");
    }
}

Person是父类 Student继承Person类,是Person的子类,Application是测试类
【输出】

Person无参构造器被执行了
Student的无参构造执行了
test
xiaoming
小明

Student student = new Student();的时候会先调用父类的无参构造,再调用子类的无参构造。
子类构造器不写super默认调用无参构造,写super可以指定调用有参/无参构造

方法重写

重写都是方法重写和属性无关
只能对public非静态的方法进行重写
静态方法:方法的调用只和左边的数据类型
非静态方法:重写
注意点:

  1. 方法名相同,参数列表相同
  2. 修饰符:范围可以扩大,不能缩小 public>protected>default>private
  3. 抛出的异常:范围:可以缩小,不能扩大 ClassNotFoundException —>Exception(大)

为什么需要重写?

  1. 父类的方法,子类不一定需要,或者不一定能满足子类的需求
    Alt+insert override
    在这里插入图片描述

多态

在这里插入图片描述
一个对象的实际类型的确定的,引用类型是不一定的,父类引用指向子类。
一个对象能执行哪些方法,主要看左边类型,和右侧的关系不大。
在这里插入图片描述
run()子类没有重写的时候,s1和s2会调用父类的run方法,run()子类重写的时候,s1和s2会调用子类的run方法

Object o=new Student();
System.out.println(o instanceof Object);//true
System.out.println(o instanceof Person);//true
System.out.println(o instanceof Student);//true
System.out.println(o instanceof String);//false
System.out.println(o instanceof Teacher);//false

在这里插入图片描述子类对象转换成父类对象,可能会丢失一些自己本身的方法!!!

在这里插入图片描述

static关键字详解

匿名代码块 和 静态代码块

匿名代码块是在初始化对象的时候调用,在构造器之前
静态代码块是类加载的时候直接执行,永久仅仅只执行一次。
【实验验证】
准备:
Application.java

package oop;

import oop.demo07.Person;

public class Application {
    public static void main(String[] args) {
        Person person = new Person();
        Person person1 = new Person();

    }
}

Person.java

package oop.demo07;

public class Person {
    {
        System.out.println("start 匿名代码块");
    }

    static{
        System.out.println("Person static 静态代码块");
    }

    public Person() {
        System.out.println("Person 构造器");
    }
}

在这里插入图片描述

静态导入包

正常情况下是【包名.函数名】

package oop;

public class Application {
    public static void main(String[] args) {
        System.out.println(Math.random());

    }
}

静态导入包之后,可以直接使用该函数名

package oop;
import static java.lang.Math.random;
public class Application {
    public static void main(String[] args) {
        System.out.println(random());

    }
}

在这里插入图片描述

抽象类

在这里插入图片描述

  1. 不能new,只能通过子类去实现它
  2. 抽象类是一个约束
  3. 抽象类中可以写普通的方法
  4. 抽象方法必须在抽象类中
  5. 抽象类 也有构造器
  6. 抽象类存在的意义:节省开发时间,提高开发效率,可扩展性比较高

【抽象类Action】

package oop.demo08;
//abstract 抽象类 类 extends 单继承
// 想要实现多继承 使用implements 接口可以多实现
public abstract class Action {
    //约束
    //abstract 抽象方法 只有方法名字没有方法实现
    //抽象类的抽象方法,继承它的子类必须实现
    public abstract void dosomething();
}

【A.java】

package oop.demo08;
//抽象类的所有方法,继承了它的子类,都必须要实现它的方法
public class A extends Action{
    @Override
    public void dosomething() {

    }
}

接口

在这里插入图片描述在这里插入图片描述
【demo】

package oop.demo09;

import java.sql.Time;

//实现接口的类,就要实现接口的方法
public class UserServiceImpl implements UserService, TimeService {
    @Override
    public void timer() {
        
    }

    @Override
    public void add(String name) {

    }

    @Override
    public void delete(String name) {

    }

    @Override
    public void update(String name) {

    }

    @Override
    public void query(String name) {

    }
}

接口的作用:
1)接口是一种约束
2)定义一些方法,不同的人实现
3)方法的默认修饰符(可以不写 系统自动添加)public abstract
4)接口中的常量都是:public static final 静态常量
5) 接口不能实例化(抽象类也不能被实例化)接口中没有构造方法
6)implements可以实现多个接口
7)实现接口的类必须重写接口中的方法

内部类

在这里插入图片描述
通过外部类来实例化内部类
内部类访问外部的私有属性、私有方法
一个Java文件只能有一个public class,但是可以有多个class
【Outer.java】嵌套形式的内部类

package oop.demo10;

public class Outer {
    private int id;
    public void out(){
        System.out.println("这是外部类的方法");
    }
    public class Inner{
        public void in(){
            System.out.println("这是内部类的方法");
        }
    }
}

public class
public static class A//静态内部类

【非嵌套形式的内部类】

public class A{
}
class B{

}

【局部内部类】
在这里插入图片描述

在这里插入图片描述

狂神说Spring.pdf 立即下载

相关推荐

狂神说java系列笔记(java基础+javaweb+ssm+微服务).rar

狂神说JAVA整个系列的笔记,从JAVA SE到分布式微服务,JUC,JVM,docker,希望对大家有帮助(#^.^#)

狂神说笔记下载

链接:https://pan.baidu.com/s/1_6Yncls-itakOUoXp6bchw 提取码:wgrs 复制这段内容后打开百度网盘手机App,操作更方便哦

qwertyu0103的博客 1万+

狂神Spring5视频MD笔记+源码.7z

个人根据视频整理的狂神Spring笔记MD文件版+全部源码

【狂神说java】java零基础学习路线

Java 学习的时间安排路线: JavaSE、数据库、前端、JavaWeb、SSM 框架、Linux、SpringBoot、SpringCloud、Hadoop

2301_80386162的博客 1974

浅谈Android MVI架构---大自然的搬运工~~~

浅谈 Android MVI架构

hong_world的博客 2154

保姆级教程:用Code Blocks搞定中科蓝讯AB5768E蓝牙音响SDK开发环境(附资源包)

本文提供了一份详细的Code Blocks配置指南,帮助开发者快速搭建中科蓝讯AB5768E蓝牙音响SDK开发环境。从工具链安装、环境配置到工程导入和调试技巧,涵盖全流程避坑要点,特别适合K12开发板初学者。附资源包下载,助您高效完成蓝牙音响开发。

weixin_28692817的博客 448

狂神说Java--Java学习笔记(合集)

笔记参考来源狂神说Java视频https://www.bilibili.com/video/BV12J41137hu 本篇笔记有点长,可以根据目录定位,建议配合视频学习。 预科 什么是计算机 名称:Computer,全称电子计算机,俗称电脑。 定义:能够按照程序运行,自动、高速处理海量数据的现代化智能电子设备。 组成:由硬件和软件组成。 形式:常见显示有台式计算机、笔记本计算机、大型计算机等。 应用:科学计算、数据处理、自动控制、计算机辅助设计、人工智能、网络等领域。 硬件及冯诺依曼结构 计算机硬件 组

Ajekseg的博客 1262

Android-S无线模块前瞻

WiFi - mainlane非强制 S 采用反射的方法直接加载wifiservice,直接hook在systemserver上,无编译依赖。gms可以动态替换wifi服务。 R 采用直接启动service的方式,wifiservice仍然map在systemserver上。 WiFi - 11ad接口支持 11ad被wifi联盟商业化为WIGIG,提供短距的60GHZ载波,理论速度为当前5G 11ac的6倍。市面上基本没有手机支持,需要独立的芯片支撑此功能。 传输距离为3m以内,外界d.

头铁的伦的博客 1043

【Java基础】【狂神说Java】Java零基础学习视频通俗易懂P33-44(Day3-20210702)

p33 Java流程控制01:用户交互Scanner p34 Java流程控制02:Scanner进阶使用 p35 顺序结构 p36 if选择结构 p37 Switch选择结构 p38 While循环详解 p39 DoWhile循环 p40 For循环详解 1 Java流程控制01:用户交互Scanner 1.1 next() package base; import java.util.Scanner; public class Demo01 { public static void m.

... 252

ChatGPT Plus完整开通指南:从账号注册到稳定使用全流程

自然语言处理(NLP)技术通过深度学习模型实现对人类语言的理解与生成,其核心原理是基于Transformer架构的大规模预训练。GPT-4作为当前最先进的生成式AI模型,在代码编写、文档分析等场景展现出显著的技术价值。在实际应用中,稳定的网络环境和合规的支付方式是确保AI助手持续服务的关键因素。针对ChatGPT Plus的开通,需要系统性地解决账号验证、虚拟信用卡支付等工程实践问题,才能实现工作流的高效整合。

weixin_34239592的博客 427

别再对着ACF/PACF图发懵了!用R语言实战教你一眼分清AR、MA和ARMA模型

本文通过R语言实战详细解析了时间序列分析中AR、MA和ARMA模型的特征图识别技巧。重点讲解了如何通过ACF和PACF图的截尾与拖尾特征快速判断模型类型,帮助数据分析师建立从图形到模型的直觉映射,提升时间序列分析的效率和准确性。

weixin_28706923的博客 356

【狂神说Java】Java零基础学习视频通俗易懂 笔记 Day04-java方法

什么是方法 //类.对象.方法 //调用系统类中的标准对象out中的println()方法 System.out.println(); Java方法是语句的集合,它们在一起执行一个功能。 方法是解决一类问题的步骤的有序组合; 方法包含于类或对象中; 方法在程序中被创建,在其他地方被引用。 **设计方法的原则:**方法的本意是功能块,就是实现某个功能的语句块的集合。我们设计方法的时候,最好保持方法的原子性,就是一个方法只能完成一个功能,这样利于我们后期的扩展。 **方法包含一个方法头和一个方法体。**下面是

m0_52856250的博客 310

生信实战:用bcftools玩转VCF文件处理(从压缩到注释全流程)

本文详细介绍了使用bcftools处理VCF文件的全流程实战指南。从数据准备、压缩索引、信息提取、质量统计到核心的变异过滤与功能注释,手把手教你高效管理基因组变异数据。重点阐述了如何利用bcftools进行VCF文件注释,整合外部数据库信息,为变异位点添加关键的生物学标签,是生物信息学数据分析的必备技能。

rgv23456789的博客 340

【狂神说Java】Java零基础学习视频通俗易懂 笔记 Day05-java数组

数组的定义 数组是相同类型数据的有序集合; 数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成; 其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们。 数组的声明创建 首先必须声明数组变量,才能在程序中使用数组; Java语言使用new操作符来创建数组; 数组元素是通过索引访问的,数组索引从0开始; 获取数组长度:arrays.length public class ArrayDemo01 { //变量的类型 变量的名字 = 变量的值; //数组类

m0_52856250的博客 268

advanced installer 打包Flutter的Windows程序安装包(基本打包、开机自启、定时自动检测升级、包含卸载程序)

advanced installer 打包Flutter的Windows程序安装包(基本打包、开机自启、定时自动检测升级、包含卸载程序)

qq_45634989的博客 2878

ESP32与DS18B20温度传感器的数据采集与告警系统

并且,通过自定义的微信告警功能,我们可以及时收到温度超过阈值的告警消息。随着物联网的快速发展,传感器在各种应用场景中发挥着重要的作用。本文将介绍如何使用ESP32微控制器与DS18B20温度传感器结合,通过串口输出和Web服务器实现温度数据的采集和监控,并使用自定义微信告警功能。上传完成后,打开串口监视器,您将看到ESP32连接到Wi-Fi网络,并开始监测温度。在您的计算机或移动设备上,打开一个Web浏览器,并输入ESP32的IP地址。在浏览器中输入ESP32的IP地址后,您将看到显示当前温度的页面。

loop_class349的博客 2243

狂神说Java-JavaWeb 超市管理系统静态资源包

https://pan.baidu.com/s/1g556spAkyGoohJ6SRtk3VQ

Amazing66的博客 1242

无敌IV5.1(破解万向版)

无敌IV5.1(破解万向版)

SpringBoot | SpringBoot项目员工管理系统完整源码

SpringBoot项目员工管理系统 完整源码 百度网盘/GitHub,可直接拿走运行,仅供学习使用!

BoBooY的Java学习笔记 1243

NETCFv35.Messages.EN/NETCFv35.Messages.zh-CHS

信息:msg:针对此异常的错误消息可用但无法显示,原因是这些消息是可选的,而当前未安装在此设备上。对于 Windows Mobile 5.0 及更高版本,请安装“NETCFv35.Messages.zh-CHS.wm.cab”,对于其他平台,请安装“NETCFv35.Messages.zh-CHS.cab”。重新启动应用程序查看该消息NETCFv35.Messages.zh-CHS.wm.cab适合WM5.0以上设备 NETCFv35.Messages.zh-CHS.cab适合WM5.0以下设备NETCFv35.Messages.EN.wm.cab适合WM5.0以上设备 NETCFv35.Messages.EN.cab适合WM5.0以下设备

模具设计介绍.pptx

模具设计介绍.pptx

【狂神说Java】视频笔记

预科(P7-12) 什么是计算机 Computer:全称电子计算机,俗称电脑。 能够按照程序运行,自动、高速处理海量数据的现代化智能电子设备。 由硬件和软件所组成。 常见的形式有台式计算机、笔记本计算机、大型计算机等。 广泛应用在:科学计算、数据处理、自动控制、计算机辅助设计、人工智能、网络等领域。 硬件及冯诺依曼结构 计算机硬件:一些物理装置按系统结构的要求构成一个有机整体为计算机软件运行提供物质基础。 计算机硬件组成:CPU、主板、内存、电源、主机箱、硬盘、显卡、键盘、鼠

rjyyyyy的博客 789

oa办公系统数据库设计.doc

oa办公系统数据库设计.doc

【Java基础】【狂神说Java】Java零基础学习视频通俗易懂P1-20(Day1)

JDK JRE JVM 命令行下编译运行java文件 Hello.java文件内容 public class Hello{ public static void main(String[] args){ System.out.print("Hello World!"); } } 准备好java文件之后就可以进行下面的操作了!! 打开cmd,进入Hello.java所在的文件路径,然后cmd下输入javac Hello.java,编译文件生成.class文件 javac Hello.java ..

... 249

springmvc 狂神说的视频及详细笔记地址整合

最近在学习java框架,发现狂神说的视频挺好的,通俗易懂,还有笔记,整理过来,以便随时复习回顾。 狂神说springmvc 视频链接: B站视频 springmvc 系列笔记 狂神说SpringMVC01: 什么是SpringMVC 狂神说SpringMVC02: 第一个MVC程序 狂神说SpringMVC03: RestFul和控制器 狂神说SpringMVC04: 数据处理及跳转 狂神说SpringMVC05: 整合SSM框架 狂神说SpringMVC06: Json交互处理 狂神说Spri

qq_43623320的博客 1305

【狂神说Java】JavaScript学习笔记

1、前段知识体系 想要成为真正的“互联网Java全栈工程师”还有很长的一段路要走,其中前端是绕不开的一门必修课。本阶段课程的主要目的就是带领Java后台程序员认识前端、了解前端、掌握前端,为实现成为“互联网Java全栈工程师”再向前迈进一步。 1.1、前端三要素 HTML(结构):超文本标记语言(Hyper Text Markup Language),决定网页的结构和内容 CSS(表现):层叠...

pan_h1995的博客 2万+
上一篇: 【树-简单】606. 根据二叉树创建字符串(复习)
下一篇: 【Java基础】【狂神说Java】Java零基础学习视频通俗易懂P77-79(异常)(Day5-20210704)
菜菜2022
博客等级 码龄9年 67粉丝 1033原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值