首页 > 编程语言 >javaEE进阶小结与回顾(一)

javaEE进阶小结与回顾(一)

时间:2023-04-04 23:45:09浏览次数:46  
标签:进阶 继承 小结 javaEE 接口 子类 修饰 父类 方法

继承

继承的格式:public class Student extends People()

父类:子类的共性抽取而来

继承的好处,子类可以直接使用父类成员,提高代码复用性与可维护性

继承的弊端,使类与类之间产生关联,增强其之间的耦合性,父类变化时子类不得不跟着变化

类与类之间具有is a的关系时,适合使用继承,比如猫是动物

 

继承的特点,Java中类只支持单继承,不支持多继承,但支持多层继承,父类的private成员,子类不能直接访问

 

访问特点,就近原则,但不考虑父类的父类

 

构造器访问特点,子类每个构造都会先调用父类构造,再执行自己

调用父类构造有三种方式:

  1. 默认,调用父类空参构造super();//不写也有,构造方法第一行
  2. 如果父类只有带参构造,没有空参构造,super(参数列表);
  3. this(参数列表)

 

super关键字

this关键字,代表调用该方法的当前对象

super,代表父类存储空间的标识(可以理解为父类对象引用)

有同名成员变量及方法时,默认访问子类,要访问父类用super.成员变量名/super.方法名()

 

方法重写

子类出现与父类一模一样的方法声明

子类需要父类的功能,但父类功能不能完全满足需求,需要子类有自己的特有内容时,重写父类方法,这样既沿袭父类功能又可以定义自己的内容

@override,是jdk提供的注解,用来修饰方法,可以检查子类方法重写的格式

注意事项,父类私有方法不能重写,子类重写父类,访问权限要大于等于父类方法访问权限(一般权限一样)

 

 

权限修饰符

概述,用来控制一个成员能够被访问的范围,可以修饰成员变量,方法,构造器,内部类,不同修饰符的限制范围不一样

作用范围:

private:同一类中

缺省(什么都不写):同类,同一包中其他类

protected:包中,不同包下子类

public:范围最广,不同包无关类也能访问

 

static关键字

概述,一个关键字,静态的意思,可以修饰成员方法,成员变量

被static修饰的特点:

被修饰变量称为静态变量,被该类所有对象共享

被修饰方法叫静态方法,可以通过类名直接调用

静态变量(类变量)和类方法(静态方法),除了可以创建对象调用,还可以通过类名.方法名直接调用

静态成员随类的加载而加载,非静态成员必须创建对象才存在

 

注意事项:

  1. 共享的东西适合使用静态修饰
  2. 修饰方法的好处,可以直接用类名调用
  3. static方法只能访问static成员(包括静态成员和静态方法),static方法内不能使用this

 

static应用的场景,一般是工具类,对于一些经常需要使用的功能,用静态方法封装,放在一个类里,就是工具类.工具类调用方便,能提高代码复用,建议将工具类的构造器私有,不让工具类对外产生对象.工具类举例,Math,Array

 

包package

本质是文件夹,作用是对类文件进行分类管理,防止类重名.

域名反写.项目名.模块名.功能分类

声明格式:package 包名;

导包:  import 包名.类名/*;

 

final关键字

可以修饰方法,变量,类:

修饰类:最终类,不能被继承

修饰方法:最终方法,不能被重写

修饰变量:是常量,只能赋值一次

 

修饰的变量是基本类型,变量储存的数据值不能发生变化(命名规范:单词全部大写,多单词以下划线隔开)

修饰的变量是引用类型:变量的储存地址值不能发生变化

 

抽象类

概述,继承中,子类继承父类,父类有些方法,知道功能但不能给出明确实现

有了抽象方法,这个类必须声明为抽象类

一个没有方法体的方法,应该定义成抽象方法,用abstract修饰

类中有了抽象方法,必须定义成抽象类,抽象类也用abstract修饰

 

特点

抽象类不能实例化

抽象类中不一定有抽象方法,但有抽象方法的一定是抽象类

抽象类的子类,要么是重写父类所有抽象方法,要么子类也是抽象类

成员变量,方法,构造器,抽象类都具备

 

接口

一种规则,一种扩展功能,降低实体之间的耦合性,提高扩展性和灵活性

定义方式    public interface 接口名 {}

接口不能实例化

接口和类之间是实现关系,通过implements关键字表示

public class 类名 implements 接口名 {}

接口的子类要么是抽象类,要么重写接口中所有的抽象方法

 

接口的成员

成员变量,只能是常量,默认修饰符public,static,final

构造方法,没有!!!

成员方法,只能是抽象方法,默认修饰符public,abstract

 

接口的关系

类与类的关系:继承关系,只能单继承,可以多层继承

类与接口的关系:实现关系,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口

接口与接口:继承关系,可以单继承,也可以多继承,一个接口可以同时继承多个接口

 

Jdk8开始新增接口方法

默认方法:default修饰 需要用接口的实现类的对象来调用

静态方法:必须static修饰 必须用本身的接口名来调用,不能用实现类调用

私有方法:必须private修饰 只能在接口中访问

 

多态

概述,同一对象,不同时刻表现出不同形态

实现多态的步骤:1.有继承/实现关系2.方法重写3.父类引用指向子类对象

举例:Animal 对象名称 = new 猫 ();

接口类型  对象名称 = new 实现类();

访问特点:

成员变量:编译看左边,运行看左边

成员方法:编译看左边,运行看右边

访问不一样是因为,成员方法有重写

优点:多态形式下,右边对象可以实现解耦合,便于扩展和维护

劣势:多态下不能使用子类的独有功能

 

类型转换

向上转型:把子当作父,猫当动物看 动物 动物 = new 猫();

向下转型:把父当作子,不能自动完成 猫 猫 = 动物对象;

 

强制类型转换:子类 对象变量 = (子类)父类类型的变量

变成子类类型,就可以调用子类的特有功能

如果转型后类型和对象真实类型不是同一类型,那么转换会报错:ClassCastException

转换前使用

变量名 instanceof() 真实类型

判断左边对象是否是右边的真实类型

标签:进阶,继承,小结,javaEE,接口,子类,修饰,父类,方法
From: https://www.cnblogs.com/kyrie-66/p/17288284.html

相关文章

  • 在Zephyr玩转MicroPython【进阶篇】
    实战:用MicroPython开发小时钟用带屏幕的开发板在做一个支持实时校时的小时钟,并具备以下特点可以独立运行可以长时间使用足够轻量实现步骤1.联网2.获取网络时间3.界面渲染硬件环境介绍屏幕模块ST7789VC3网络模块聆思CSK6011aNanokit开发板,开发板支持能力如下Zehyr外设操作Zeph......
  • 「刷起来」Go必看的进阶面试题详解
    勤学如春起之苗,不见其增日有所长;辍学如磨刀之石,不见其损日有所亏。本文的重点:逃逸分析、延迟语句、散列表、通道、接口。1.逃逸分析逃逸分析是Go语言中的一项重要优化技术,可以帮助程序减少内存分配和垃圾回收的开销,从而提高程序的性能。下面是一道涉及逃逸分析的面试题及其详......
  • vickyの网络流学习小结
    前言之前一直觉得网络流很难,畏难心理作祟就一直没好好学。然后今天教练讲杂题选做的时候就遭报应了。QAQ下午本着能会就会不会也得会的心态看了一下网络流,感觉还挺简单(?草率地学了一下,在这里稍微做一下总结防止以后忘记吧。QwQ参考blog:网络流小记(EK&dinic&当前弧优化&费用......
  • vickyの搜索学习小结
    昨天模拟赛考了\(IDA^*\)然后愣是没写出来暴力,感觉自己的搜索是时候该好好练一下了啊QAQ。upd:本来只打算写一下\(ID\)、\(A^*\)、模拟退火、01bfs,双向bfs、爬山法和遗传算法的,后面想起来之前和在一个哥哥那里听过的一致代价搜索,稍微学习了一下,等有空的时候再写。迭代加......
  • Three.js 进阶之旅:全景漫游-初阶移动相机版
    Three.js进阶之旅:全景漫游-初阶移动相机版 声明:本文涉及图文和模型素材仅用于个人学习、研究和欣赏,请勿二次修改、非法传播、转载、出版、商用、及进行其他获利行为。摘要3D 全景技术可以实现日常生活中的很多功能需求,比如地图的街景全景模式、数字展厅、在线看房、社交......
  • 【第27天】SQL进阶-查询优化- performance_schema系列实战三:锁问题排查(表级锁)(SQL 小虚
    回城传送–》《32天SQL筑基》文章目录零、前言一、什么是表级锁二、什么时候适合加表级锁三、实战演练3.1数据准备(如果已有数据可跳过此操作)3.2开启第一个会话,执行显式加表级锁3.3开启第二个会话,对该表执行update更新3.4开启第三个会话,查询线程信息3.5分析3.6释放第一个会话......
  • HCIP-ICT实战进阶12-接入安全技术介绍
    HCIP-ICT实战进阶12-接入安全技术介绍HCIP最后一篇理论博客了,这个搞完我再考虑要不要把系统集成也整一份博客,还是把HCIP实验的博客整理整理,这学期争取去国科那边接接项目吧.0前言在这篇博客中,我将介绍常见的以太网交换安全技术,包括端口隔离、端口安全、MAC地址表安......
  • php架构之路,phper进阶,学习路线
     鉴于最近跟小伙伴聊了很多PHP架构发展方向的问题,相关技术整理了一下,也顺便规划了一下自己下年。【我的学习路线】一.常用的设计模式以及使用场景    以下是我用到过的  工厂,单例,策略,注册,适配,观察者,原型,装饰器,facade,loc,pipeline二.阅读一个框架源码 例如:laravel......
  • 性能工具之Taurus场景使用(进阶篇)
    前言在上两文中介绍了安装和入门使用,本文我们来看看Taurus一些进阶的玩法。性能工具之Taurus入门(安装篇)性能工具之Taurus使用(入门篇)复杂场景统一测试复杂场景的压力测试,如果有多个同学从事脚本开发,则有时必须使用多个测试脚本文件。这意味着将多个测试脚本需要集成到单个压力测试......
  • 28.ElasticSearch进阶
    两种查询方式在将所有的检索条件全部放在url里GETbank/_search?q=*&sort=account_number:asc表示在banK索引下查询所有文档根据account_number正序  hits里有10条数据,总数是1000,可以看出ES默认做了分页。我们以 /_cat/health 为例试一下:索引一个文档(保存)保......