首页 > 编程语言 >JavaSE基础知识分享(五)

JavaSE基础知识分享(五)

时间:2024-08-12 22:08:04浏览次数:16  
标签:内部 子类 多态 接口 基础知识 JavaSE 分享 方法 抽象类

写在前面

前面讲的是面向对象中的继承思想,下面让我们来看看多态这部分的内容!

Java 面向对象概念概述

多态

概述:某一个事物在不同状态下的多种状态。

实现多态的三大前提

  1. 要有继承关系。
  2. 要有方法的重写。
  3. 要有父类的引用指向子类对象。

访问成员的特点

  • 成员变量:编译时看左,运行时看左。
  • 成员方法:编译时看左,运行时看右。
  • 静态成员方法:编译时看左,运行时看左。

多态的好处

  1. 提高了程序的维护性(继承)。
  2. 提高了程序的扩展性(多态)。

多态的弊端

  • 在多态的形式下,无法使用子类中特有的成员方法。
  • 解决方案:向下转型(例如,曹操曹植的故事)。
  • 向下转型可能会遇到的问题ClassCastException 类转换异常,比如将 Apple 变成 Banana

抽象类

概述:用来描述现实生活中抽象的概念集合。

语法:使用 abstract 关键字进行修饰。

特点

  1. abstract 可以修饰类和成员方法。
  2. 一个抽象类中,既可以存在抽象方法,也可以存在具体的实现方法。
  3. 当一个类中有抽象方法时,这个类必须是抽象类。
  4. 抽象类可以继承抽象类,可以选择性地重写方法。
  5. 具体的类继承抽象类时,必须重写所有的抽象方法。
  6. 抽象类不能实例化。
  7. 抽象类和类一样,子类只能继承一个父类,但可以多层继承。

接口

概述:主要用来描述事物额外的扩展功能。

关键字interface

特点

  1. 接口中只有常量,所有的变量默认使用 public static final 修饰。
  2. 接口中只允许出现抽象方法,所有的方法默认使用 public abstract 修饰。
  3. 具体类实现接口使用 implements 关键字。当具体类实现接口时,必须实现接口中所有的抽象方法。
  4. 一个类可以同时实现多个不同接口。
  5. 接口与接口之间的关系是继承关系,一个接口可以同时继承多个接口。
  6. 接口无法实例化。

形式参数和返回值类型的对比

形式参数

  • :当看到一个类作为方法参数类型时,调用时需要传递该类及其子类对象。
  • 抽象类:当看到一个抽象类作为方法参数类型时,调用时需要传递继承该抽象类的具体子类对象。
  • 接口:当看到一个接口作为方法参数类型时,调用时需要传递实现该接口的具体子类对象。

返回值类型

  • :当看到一个类作为方法的返回值类型时,方法内部应返回该类或该类的子类对象。
  • 抽象类:当看到一个抽象类作为方法的返回值类型时,方法内部应返回继承该抽象类的具体子类对象。
  • 接口:当看到一个接口作为方法的返回值类型时,方法内部应返回实现了该接口的具体子类对象。

包的划分

  • 根据功能进行划分。
  • 根据角色进行划分.

导包

  • 使用 import
  • import 语句在 package 和所有 class 之间写。

权限修饰符

权限修饰符

权限修饰符 同一类中 同一包子类,其他类 不同包子类 不同包其他类
public
protected
默认
private

总结

  • public:都可以访问。
  • protected:只能在子类中访问。
  • 默认:只能在包内访问。
  • private:只能在类中访问。

内部类

成员内部类

  • 概述:将类定义在另一个类的成员位置上。
  • 形式
    • 形式 1:没有使用 staticprivate 关键字修饰。
      外部类名.内部类名 对象名 = new 外部类名().new 内部类名();
      
    • 形式 2:使用 static 关键字修饰。
      外部类名.内部类名 对象名 = new 外部类名.内部类名();
      
    • 形式 3:使用 private 关键字修饰。
      • 只能在类中使用,外界无法访问。

局部内部类

  • 概述:将类定义在方法内部。
  • 特点
    1. 只能在方法内部使用。
    2. 方法定义的局部变量在局部内部类中默认是 final,不能修改。

匿名内部类

  • 语法定义格式
    new 抽象类/接口/类() {
      // 重写方法
    };
    

标签:内部,子类,多态,接口,基础知识,JavaSE,分享,方法,抽象类
From: https://www.cnblogs.com/cjybigdatablog/p/18355820

相关文章

  • 铁路信号基础知识
    铁路信号基础知识C0、C1、C2、C3、C4还没补充完全基本概念及故障-安全原则1.铁路信号定义及作用狭义:用特定的物体(包括灯)颜色、形状、位置或用仪表和音响设备等向行车人员传达信息。控制的是司机。最常用的是视觉信号--红绿灯,包括地面上的和机车上的。(颜色和外型形状花纹等......
  • C++基础知识:友元是什么,友元(全局函数做友元)
    在程序里,有些私有属性也想让类外特殊的一些函数或者类进行访问,就需要用到友元的技术友元的目的就是让一个函数或者类访问另一个类中私有成员通俗一点说就是友元,就好比你的闺蜜,你可以让他了解你身上的特有的东西友元的关键字为friend全局函数做友元代码测试:#include......
  • 软件测试需要具备的基础知识【功能测试】---后端知识(三)
    ​​您好,我是程序员小羊!前言为了更好的学习软件测试的相关技能,需要具备一定的基础知识。需要学习的基础知识包括:1、计算机基础2、前端知识3、后端知识4、软件测试理论后期分四篇文章进行编写,这是第三篇这一篇文章是讲解后端基础知识的一篇文章:正文:一、系统......
  • 分享一些视频剪辑快捷键
    以下是一些PremierePro中常用的视频剪辑快捷键: -文件操作:- Ctrl+Alt+N (Windows)/ Opt+Cmd+N (Mac):新建项目;- Ctrl+O (Windows)/ Cmd+O (Mac):打开项目;- Ctrl+S (Windows)/ Cmd+S (Mac):保存;- Ctrl+Shift+S (Windows)/ Shift+Cmd+S......
  • 分享安装Windows11系统相关的经验
    文章目录1.概述2.安装过程3.经验分享本章回中我们准备向大家介绍如何安装Window11操作系统同时分享一些相关的安装经验。1.概述有看官说都什么年代了还介绍如何安装操作系统,不过介绍安装操作系统的方法不是我的重点,我的重点是分享相关的安装经验,帮助大......
  • 【经验分享】数据结构——哈希查找冲突处理方法(开放地址法-线性探测、平方探测、双散
    目录1.线性探测(LinearProbing)2.平方探测(QuadraticProbing)3.双散列探测(DoubleHashing)4.分离链接法(SeparateChaining)5.再散列(Rehashing)如何解答这些常见问题1.写出处理冲突的方法名称2.构造基于该处理冲突方法的哈希表3.求出该哈希表在等概率情况下查找成功......
  • 病毒分享(C++)[1]
    今天我给大家分享的是勒索病毒C++版,代码如下,可以《免费》复制。#include<bits/stdc++.h>#include<iostream>#include<cstdlib>#include<cstdlib>#include<ctime>#include<Windows.h>#define_CRT_SECURE_NO_WARNINGS1#pragmacomment(lib,"winmm.li......
  • javase-day01
    aException_Exception01packagecom.se.aException;/***异常,Exception,父类Throwable。与其平级的是Error(Error错误,程序员无法处理,属于JVM级别的错误)*1.程序员可以处理异常。如果不处理,即JVM帮忙处理,简单粗暴,就是终止程序的运行*2.所以,程序员应该处理......
  • 分享一套包含12000多条历史上的今天发生的大事件数据库 及中国城市2017年全年GDP排行
    一、分享一套包含12000多条历史上的今天发生的大事件数据库    分享一套包括1.2万条历史上的今天的sql数据库文件。包含12000多条历史上的今天数据的SQL数据库文件.zip。详细数据可以参考使用此数据库运行的网站: http://www.guihei.com 下    资源下载链......
  • Python基础知识:奠定坚实的编程基础
    Python,作为一种备受欢迎的高级编程语言,凭借其简洁的语法、强大的标准库和丰富的第三方模块,赢得了广泛的赞誉和应用。无论你是编程新手还是资深开发者,Python都能提供丰富的学习机会和实际应用场景。本文旨在深入探讨Python的基础知识,涵盖字面量、变量、数据类型、注释、类型......