【再回顾面向对象】,关键字Satic、final

2024-09-01 13:04

本文主要是介绍【再回顾面向对象】,关键字Satic、final,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

再回顾面对对象

object:所有类的祖先,所有类的方法

GC:垃圾回收站

一般不会回收对象——Car c = new Car();

在这里插入图片描述

toString()

在这里插入图片描述

Hashchde要跟地址对应

  • 尽量不要自己产生
  • 跟指针不一样,指针是直接指向地址
  • 像是数组的索引
  • 找的时候可能会有相同的hashcode,所以再加上equals比较哦
  • **对象是如何存储的?**重点x
  • 如图:
    在这里插入图片描述
    指针是一把”双刃剑“。

在这里插入图片描述

内存不安全,可以访问,改写+5666很不安全。

euqals,==

在这里插入图片描述

访问控制符——控制可见性

本类中同包不同包继承关系不同包无继承
private
dafult(不写,默认)
protected
public

在这里插入图片描述

构造器可以用任何访问控制符

抽象类

抽象类普通类接口
定义类abstract classclassinterface
定义子类extengsextendsimplement
方法abstract方法,非abstract方法非abstract方法abstract方法,default
属性正常属性正常属性常量
构造器(初始化属性)正常可以不允许使用
创建对象不能创建抽象类对象可以不能创建接口对象
继承单继承单继承多实现

类–>抽象类–>《接口》

在这里插入图片描述

越抽象的概念越稳定

在这里插入图片描述

Eat

《IEat》接口和实现

在这里插入图片描述

一般关键字

在这里插入图片描述

static——(静态/公共区域)OR 全局空间

有它往哪里写都可以

在这里插入图片描述

很久以前的main

Jvm的入口方法
在这里插入图片描述
在这里插入图片描述

历史上,类是如何成为对象的?

核心:顺序在new之前出来,多次构造创建对象时只出现一次,

在这里插入图片描述

两点注意

  1. class转换为对象之前加载static,放入static的空间(早)
  2. 独立内存空间,被对象共享(共享空间)
  3. 可用于类的单元测试

在这里插入图片描述

b++ ----> new *3----> 3+3=6

银行类

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

package com.ffyc.entity;public class Bank {private static double balance = 100000.00;//有static变成全局了,出现早public static String name = "帅帅帅";public  void  deposit(double money){balance+=money;}public void withdraw(double money){balance-=money;}public void print(){System.out.println("余额"+balance);}//    public static void main(String[] args) {
//        System.out.println("余额"+balance);
//    }
}

Test:

package com.ffyc.test;import com.ffyc.entity.Bank;public class TestBank {public static void main(String[] args) {Bank icbc = new Bank();Bank abc = new Bank();Bank ccb = new Bank();icbc.withdraw(10000);abc.withdraw(8000);ccb.deposit(50);icbc.print();abc.print();ccb.print();System.out.println(Bank.name);}
}

输出:

在这里插入图片描述

分层思想

crud:增删改查

基本框架

在这里插入图片描述

项目

在这里插入图片描述

构建

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

entity

学生类:属性–set,get,toString,constructor

dao层

数据交互,数组CRUD(增删改查)

一层一个接口
和一个实现。
package com.ffyc.sims.dao;import com.ffyc.sims.entity.Student;/*** iS 实现类*/
public class IStudentDaoImpl implements IStudentDao {private Student[] students = new Student[100];private int size;//学生数量,默认是0@Overridepublic void add(Student student) {if (size>=students.length) {System.out.println("学校人数已满。");}students[size++]=student;}@Overridepublic void delete(Student studentId) {}@Overridepublic void update(String studentId, double score) {}@Overridepublic Student findById(String studentId) {return null;}
}

在这里插入图片描述

final

1.修饰基本数据类型–变量不可变(只读)

2.在这里插入图片描述

3.修饰类—不可被继承—public final class String

4.sum——前四个是重点x 面试必备
在这里插入图片描述
在这里插入图片描述

这篇关于【再回顾面向对象】,关键字Satic、final的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1127013

相关文章

Oracle Start With关键字

Oracle Start With关键字 前言 旨在记录一些Oracle使用中遇到的各种各样的问题. 同时希望能帮到和我遇到同样问题的人. Start With (树查询) 问题描述: 在数据库中, 有一种比较常见得 设计模式, 层级结构 设计模式, 具体到 Oracle table中, 字段特点如下: ID, DSC, PID; 三个字段, 分别表示 当前标识的 ID(主键), DSC 当

关键字synchronized、volatile的比较

关键字volatile是线程同步的轻量级实现,所以volatile性能肯定比synchronized要好,并且volatile只能修饰于变量,而synchronized可以修饰方法,以及代码块。随着JDK新版本的发布,synchronized关键字的执行效率上得到很大提升,在开发中使用synchronized关键字的比率还是比较大的。多线程访问volatile不会发生阻塞,而synchronize

Java基础回顾系列-第七天-高级编程之IO

Java基础回顾系列-第七天-高级编程之IO 文件操作字节流与字符流OutputStream字节输出流FileOutputStream InputStream字节输入流FileInputStream Writer字符输出流FileWriter Reader字符输入流字节流与字符流的区别转换流InputStreamReaderOutputStreamWriter 文件复制 字符编码内存操作流(

Java基础回顾系列-第五天-高级编程之API类库

Java基础回顾系列-第五天-高级编程之API类库 Java基础类库StringBufferStringBuilderStringCharSequence接口AutoCloseable接口RuntimeSystemCleaner对象克隆 数字操作类Math数学计算类Random随机数生成类BigInteger/BigDecimal大数字操作类 日期操作类DateSimpleDateForma

Java基础回顾系列-第三天-Lambda表达式

Java基础回顾系列-第三天-Lambda表达式 Lambda表达式方法引用引用静态方法引用实例化对象的方法引用特定类型的方法引用构造方法 内建函数式接口Function基础接口DoubleToIntFunction 类型转换接口Consumer消费型函数式接口Supplier供给型函数式接口Predicate断言型函数式接口 Stream API 该篇博文需重点了解:内建函数式

Java基础回顾系列-第二天-面向对象编程

面向对象编程 Java类核心开发结构面向对象封装继承多态 抽象类abstract接口interface抽象类与接口的区别深入分析类与对象内存分析 继承extends重写(Override)与重载(Overload)重写(Override)重载(Overload)重写与重载之间的区别总结 this关键字static关键字static变量static方法static代码块 代码块String类特

Java基础回顾系列-第六天-Java集合

Java基础回顾系列-第六天-Java集合 集合概述数组的弊端集合框架的优点Java集合关系图集合框架体系图java.util.Collection接口 List集合java.util.List接口java.util.ArrayListjava.util.LinkedListjava.util.Vector Set集合java.util.Set接口java.util.HashSetjava

Java基础回顾系列-第九天-数据库编程

Java基础回顾系列-第九天-数据库编程 数据库简介工具包java.sql API 内容与数据库建立连接执行SQL语句数据库检索和更新查询结果SQL类型对应Java类型映射元数据异常 API方法DriverManagerConnectionStatementPreparedStatementCallableStatementResultSetjava.sql.Date批处理、存储过程、事务

Java基础回顾系列-第一天-基本语法

基本语法 Java基础回顾系列-第一天-基本语法基础常识人机交互方式常用的DOS命令什么是计算机语言(编程语言) Java语言简介Java程序运行机制Java虚拟机(Java Virtual Machine)垃圾收集机制(Garbage Collection) Java语言的特点面向对象健壮性跨平台性 编写第一个Java程序什么是JDK, JRE下载及安装 JDK配置环境变量 pathHe

ffmpeg面向对象-待定

1.常用对象 rtsp拉流第一步都是avformat_open_input,其入参可以看下怎么用: AVFormatContext *fmt_ctx = NULL;result = avformat_open_input(&fmt_ctx, input_filename, NULL, NULL); 其中fmt_ctx 如何分配内存的?如下 int avformat_open_input(