首页 > 编程语言 >【Java基础】面向对象

【Java基础】面向对象

时间:2023-11-27 15:22:51浏览次数:36  
标签:调用 Java 构造方法 成员 基础 接口 面向对象 父类 方法

关键字

this关键字

  • 当前类对象的引用(地址)
  • this构造方法的使用场景:

super关键字

  • 代表父类存储空间的标识
  • 如果被调用的成员变量|成员方法在子类中不存在,那么"super."可以省略,而且本质上省略的是"this.",因为子类已经继承了父类的成员变量和成员方法。

static关键字

  • 静态,修饰符(变量、方法):
    可以修饰成员变量,也可以修饰成员方法
    被JVM调用,不创建对象就可以使用

  • 成员修饰特点:
    (1)可以被类的所有对象共享
    (2)多了一种调用方式,可以通过类名调用(且静态成员建议使用类名调用
    (3)随着类的加载而加载,优先于类的对象存在。(类的字节码文件进入方法区时,静态成员就会在堆内存区的静态成员变量区中存储并分配默认初始值。)

  • 使用场景
    (1)成员变量:需要共享数据时用static修饰
    (2)成员方法:static修饰常用在工具类中
    【工具类:存在的方法都是为别的类调用提供的,可以直接通过类名调用,不需要再new一个工具类的对象才能调用,因此如果一个类所有成员方法都是static的话,该类的构造方法会被设置成私有,从而强制通过类名调用,禁止new类对象浪费内存空间】

  • 注意事项
    (1)静态方法中,只能访问静态成员(直接访问)
    (2)static中不允许使用this关键字
    【非静态成员需要new出对象之后才会存在,this指代的也是类对象,而static成员随着类的加载就已经存在了,因此静态方法没办法访问非静态成员,也不能使用this关键字】

final关键字

  • 最终,修饰(方法,类,变量)

  • fina修饰的特点
    (1)修饰方法:表明该方法是最终方法,不能被重写
    (2)修饰类:表明该类是最终类,不能被继承
    (3)修饰变量:表明该变量是常量,不能再次被赋值

  • 注意:
    (1)基本数据类型:数据值不能改;引用数据类型:地址值不能改,内容可以改
    (2)final修饰成员变量,不允许修饰默认值!(必须定义时赋值|构造方法中赋值)
    (3)final修饰变量的命名规范:所有字母大写,单词之间以'_'分隔

权限修饰符

private

  • 只能在同一个类中访问

(default)

  • 可以在同一个类,同一个包中访问

protected

  • 可以在同一个类,同一个包,不同包的子类中访问
    不同包的子类中访问:如果子类和父类不在同一个包中,子类成员方法中可以调用父类protected的成员

public

  • 可以在任意位置访问

构造方法

  • 创建类对象时自动执行,可以执行一些初始化类的操作
  • 不允许手动调用
  • 如果没有定义有参数构造方法,系统会给出一个默认的无参数构造方法;如果定义了有参数构造方法,系统则不会给出默认的无参数构造方法
    一般把系统默认生成的无参数构造方法和有参数构造方法都手动定义,这里属于方法重载

封装

  • 使用类设计对象时,将需要处理的数据以及处理这些数据的方法,设计到对象中

  • 优点:
    1.便于维护数据,保护数据安全性
    2.使用者不需要知道内部实现细节,只需要了解使用方法即可

  • 设计规范
    合理隐藏、合理暴露

标准JavaBean

  • JavaBean是实体类。实体类只负责数据存取,而对数据的处理交给其他类来完成,以实现数据和数据业务处理相分离
  • 类成员变量全部私有,对外提供get和set方法
  • 提供无参和带参的构造方法

继承

继承的介绍和使用

  • 让类与类之间产生关系(子父类关系),子类可以直接使用父类中非私有的成员

  • 继承的格式

  • 什么时候使用继承?

继承特点

  • Java只支持单继承,不支持多继承,但是可以多层继承

继承中成员的访问特点

1. 成员变量

如果子类和父类中成员变量重名,通过this关键字调用本类(子类)成员变量,通过super关键字调用父类成员变量

2. 成员方法

方法重载(Overload)
  • 同一个类中,方法名相同,参数不同(参数类型、参数个数、参数顺序),与返回值无关
方法重写(Override)
  • 在子父类中,出现了方法声明完全相同的方法(方法名、参数、返回值)

继承的构造方法

抽象类

介绍

是一种特殊的父类,内部可以编写抽象方法

定义格式

注意事项

abstract关键字和其他关键字的冲突

接口

介绍

接口中的成员特点

JDK8接口新特性
  • 应用场景:如果项目升级,接口需要增加方法,那么所有的实现类都会报错;

  • 既然接口已经允许方法带有方法体了,索性直接放开静态方法,可以类名直接调用

JDK9接口新特性

类和接口之间的各种关系

抽象类和接口的对比


【接口为程序制定规则,使得代码更加规范】

多态

定义

  • 同一个行为具有多个不同表现形式或形态的能力

多态的前提

多态的成员访问特点


            多态调用静态成员时始终通过父类类名调用的父类静态成员

多态的好处

多态的弊端

多态中的转型

多态中转型可能出现的问题


解决:

代码块

匿名内部类


public class AnonymousClassTest {

    /** 匿名内部类

     格式:new 类/接口名(){

     }

        new 类名(){} : 代表继承这个类
        new 接口名(){} : 代表实现这个接口
     */
    public static void main(String[] args) {

        /*
        调用使用接口为参数的函数,不能直接传入接口
        应用多态传入接口实现类对象 [在接口中抽象方法很多的情况下,建议还是传入接口实现类对象]
         */
        useInter(new InterImpl());

        /*
        匿名内部类作为方法参数,更加简洁 [适用于接口中抽象方法不多的情况]
         */
        useInter(new Inter() {
            @Override
            public void show() {
                System.out.println("匿名内部类。。。show。。。");
            }
        });

    }

    /*
    定义了一个参数为接口的函数
     */
    public static void useInter(Inter i) {
        i.show();
    }

}

/*
定义一个接口
 */
interface Inter {
    void show();
}

/*
定义接口实现类
 */
class InterImpl implements Inter {

    @Override
    public void show() {
        System.out.println("接口实现类。。。show。。。");
    }
}

Lambda表达式

Lambda介绍

!!并不是所有的匿名内部类都可以用Lambda表达式进行简化
!!Lambda表达式只能简化函数式接口的匿名内部类的写法

Lambda表达式的省略写法

Lambda表达式和匿名函数类的区别

标签:调用,Java,构造方法,成员,基础,接口,面向对象,父类,方法
From: https://www.cnblogs.com/Eve7Xu/p/17844850.html

相关文章

  • 分享一套适合二开的JAVA开源版本MES系统
    1、系统概述:万界星空科技免费MES、开源MES、商业开源MES、市面上最好的开源MES、MES源代码、适合二开的开源MES。1.万界星空开源MES制造执行系统的Java开源版本。开源mes系统包括系统管理,车间基础数据管理,计划管理,物料控制,生产执行,质量管理,库存管理,看板管理,数据分析等主体功能模块......
  • 证券从业资格证考点(金融市场基础知识)--封闭式基金与开放式基金主要区别
    封闭式基金与开放式基金主要有以下区别:1、期限不同,封闭式基金一般有一个固定的存续期,通常在5年以上,一般为10年或15年;而开放式基金一般是无特定存续期限的。2、发行规模不同,封闭式基金发行规模固定;开放式基金没有发行规模,故本题选择“基金规模是否固定”。3、基金份额交易方式不......
  • JavaWeb实现简单的文件上传和下载
    一、文件上传1.1文件上传的简单实现前端的标签介绍①需要一个<form>表单标签,请求方式为post请求PS:因为get请求时url有长度限制,而带有文件上传的url一般会超出get请求的长度限制,所以只能用post②<form>标签中需添加enctype属性,属性值必须为multipart/form-dataenctype属性:enc......
  • 【Jmeter】编写java脚本
    Jmeter开发java脚本主要的依赖包 使用idea创建项目1、创建java项目 2、导入依赖包 3、创建一个类,继承AbstractJavaSamplerClient类,并实现runtest方法和重写getDefaultParameters方法 getDefaultParameters方法中主要用来完成,界面需要传入的参数有哪些run......
  • JavaWeb实现文件上传下载功能实例解析
    在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现。对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用Servlet获取上传文件的输入流然后再解析里面的请求参数是比较麻烦,所以一般选择......
  • java集合框架(一)Map的常见使用及循环的五中方式
    Map循环遍历的五种方法先使用Map方法定义数据Mapmap=newHashMap();map.put(0,"张三");map.put(1,"李四");map.put(2,"王五"); 1.通过key的set集合进行遍历,然后通过key来取map的valueSetset=map.keySet();for(Object......
  • Java读取JSON文件
    读取json文件的结果利用fastjson进行转换为json对象或集合进行操作依赖的fastjson包<dependency><groupId>com.alibaba.fastjson2</groupId><artifactId>fastjson2</artifactId><version>2.0.17</version>......
  • MQTT断开连接((32109) - java.io.EOFException)
    现象:首先代码没问题,一台设备测试正常,当多台设备同时使用时,会出现连接成功后,立刻断开连接。client=newMqttClient(①,②,③)①:主机名②:客户端ID,客户的唯一标识③:设置clientid保存形式,默认以内存保存例如:newMqttClient(tcp://139.196.34.00,34:20:03:0b:b9:00,newMemoryPersisten......
  • java集合框架介绍
    Java集合框架是Java编程语言提供的一组框架,用于管理和操作数据集合。集合框架包含了一系列接口和类,可以用于存储、组织和处理数据。Java集合框架的核心是集合接口,这些接口定义了数据集合的基本行为和特性。下面,我们将详细介绍Java集合框架中的每个接口。@[toc]##一、Collection......
  • 10道不得不会的Java容器面试题
    以下都是Java容器常见面试题,相信大家都会有种及眼熟又陌生的感觉、看过可能在短暂的面试后又马上忘记了。JavaPub在这里整理这些容易忘记的重点知识及解答,建议收藏,经常温习查阅。来看看你会做几道1.请说一下Java容器集合的分类,各自的继承结构2.Collection和Collections有什么......