继承(extends), 多态 , 抽象(abstract)接口() 易混难点解析
特性
- java是单继承的,一个类直接继承的父类只能有唯一的一个
- java中父类可以有多个子类
- Object是所有类的父类,一个类没有父类则默认继承Object;
继承中的重写
- 子类重写方法访问权限不能比父类低
- 私有(private)方法不能被重写
- 可以使用@Override 检测方法的重写是否正确
- 子类返回值必须小于等于父类的返回值
继承中构造方法
- 子类中所有的构造方法都会默认访问父类中的无参构造方法
- 子类会继承父类中的数据,可能会使用父类的数据.所以子类初始化之前,一定会先完成父类数据的初始化.
- 每一个子类构造方法的第一条默认语句都是super();
- 父类中没有无参,只有有参
- 可以通过super关键字显示调用父类的带参构造方法
- 在父类中自己提供一个无参构造方法
多态中的成员访问
- 成员变量 : 编译看左边,执行看左边
- 成员方法 : 编译看左边,执行看右边
父类引用指向子类对象(向上转型)
Animal a=new Cat();
父类引用可以访问子类重写方法;
父类引用转为子类对象(向下转型)
Cat c=(Cat)a;
a.eatyu();
可以访问子类特有方法
抽象(abstract)
- 抽象类和抽象方法都必须使用 abstrsct 关键字修饰
- 抽象类不一定有抽象方法,但是有抽象方法的类一定是抽象类
- 抽象类不能实例化
抽象类可以参照多态的形式,通过子类对象实例化,这叫抽象类多态
- 抽象类的子类要么是抽象方法,要么重写抽象方法;
接口(interface)
接口的特点
- 接口用关键字 interface 修饰
public interface 接口名{...}
- 类实现接口用 implements 表示
public class 类名 implemends 接口名{...}
- 接口不能直接实例化
接口参照多态的形式,通过实现类对象实例化,这叫做接口多态
接口的成员特点
- 成员变量
成员变量只能是常量
接口中的成员变量默认使用 public static final 修饰
- 构造方法
接口没有构造方法,因为接口主要是对行为进行抽象的,没有具体存在
- 成员方法
- java8之前接口只能是抽象方法
默认为 : public abstract
- java8开始接口允许使用默认方法,可以解决接口升级的问题
格式:
public defoult 返回值类型 方法名称(参数列表){ 方法体... }
- java 8 还允许了静态方法
格式 :public static void 方法名(){ 方法体...}
静态方法通过接口名称调用
- java 9 以后接口允许定义私有方法
- 普通私有方法:解决多个默认方法之间的代码重复问题
格式:private void 方法名称(参数列表){ 方法体... }
2. 静态私有方法:解决多个静态方法之间的代码重复问题
格式:private static void 方法名称(参数列表){ 方法体... }
继承(extends), 多态 , 抽象(abstract)接口() 易混难点解析的更多相关文章
- Java面向对象理解_代码块_继承_多态_抽象_接口
面线对象: /* 成员变量和局部变量的区别? A:在类中的位置不同 成员变量:在类中方法外 局部变量:在方法定义中或者方法声明上 B:在内存中的位置不同 成员变量:在堆内存 局部变量:在栈内存 C:生 ...
- java面向对象(封装,继承,多态,抽象,接口的定义和实现)
1.封装 在面向对象程式设计方法中,封装(英语:Encapsulation)是指,一种将抽象性函式接口的实作细节部份包装.隐藏起来的方法. 封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定 ...
- 关于继承、封装、多态、抽象和接口(Java)
1.继承: 通过扩展一个已有的类,并继承该类的属性和行为,来创建一个新的类.已有的称为父类,新的类称为子类(父类派生子类,子类继承父类). (1)继承的优点:①代码的可重用性: ②父类的属性的方 ...
- Java面向对象的基本概念(对象、封装、继承、多态、抽象、接口、泛型)
对象:是一个自包含的实体,用一组可识别的特征和行为来标识. 类:具有相同的属性和功能的对象的抽象合集.(类关键字class,首字母大写). 实例:就是一个真实的对象. 实例化:创建对象的过程,关键字是 ...
- Java学习笔记 07 接口、继承与多态
一.类的继承 继承的好处 >>使整个程序架构具有一定的弹性,在程序中复用一些已经定义完善的类不仅可以减少软件开发周期,也可以提高软件的可维护性和可扩展性 继承的基本思想 >>基 ...
- java类的继承,多态,抽象类与接口
知识点梳理: 1,怎样定义自己的类. MyStarFrame,MyStarPanel 类中定义: (1)属性(数据),变量. (2)方法(函数),行为. (3)构造方法(特征,作用,何时被调用 ...
- Java基础---继承、抽象、接口
一.概述 继承是面向对象的一个重要特征.当多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继那个类即可.这时,多个类可以称为子类,单 ...
- Java 继承、抽象、接口
一.继承 1. 概述 继承是面向对象的重要特征之一,当多个类中存在相同的属性和行为时,将这些内容抽取到单独一个类中,那多个类中无需再定义这些属性和行为,只需继承那个单独的类即可. 单独的类称为父类或超 ...
- java四大特性理解(封装继承多态抽象)
封装: 封装是把过程和数据包围起来,对数据的访问只能通过已定义的接口.面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治.封装的对象,这些对象通过一个受保护的接口访问其他对象.封装是一 ...
随机推荐
- 弦图及其在 OI 中的现代应用
八月份的时候得知要填综评表格,综评表格里面又需要一个研究性学习报告,而我连研究性学习课的老师长啥样都不知道.于是我把两份 OI 笔记拼拼凑凑成了这篇文章充当两份研究性学习报告之一(另一份可能更有趣一些 ...
- 王炸!!IDEA 2021.1 推出语音、视频功能,边写代码边聊天,我真的服了…
IDEA 2020.3 刚没用多久,2021.1 又陆续给我推送更新了: 启动就提醒更新,麻烦,那不如更新下,体验下新版本. 如上图所示,2021.1 更新了 9 个新特性,下面栈长会一一体验给大家介 ...
- 一.文件处理和json模块(容易混淆知识点即用法)
一.文件处理 注意点1: 打开文件包含两部分资源:操作系统级打开得文件+应用程序的变量. 在操作完毕一个文件时,必须把该文件的两部分资源一个不落的回收 如下: f.close() #回收操作系统级打开 ...
- python进阶(17)协程
协程 协程(Coroutine),又称微线程,纤程.(协程是一种用户态的轻量级线程) 作用:在执行 A 函数的时候,可以随时中断,去执行 B 函数,然后中断B函数,继续执行 A 函数 (可以自动切 ...
- 假如kubernetes不支持docker了该怎么办
假如kubernetes不支持docker了该怎么办 从官网安装文档可以看到kubernetes支持一下几种: https://kubernetes.io/docs/setup/production- ...
- 推荐个开源在线文档,助道友领悟 Django 之“道”
本文面向有手(需要一点点 Python Django 基础)的小伙伴,急需文档管理者食用最佳. 作者:HelloGitHub-吱吱(首发于 HelloGitHub 公众号) 嗷嗷待哺的小白:" ...
- Sublime Text 3.1 3170 / 3176 注册码(附降级与禁止更新方法)
3.1 3176 可用注册码 127.0.0.1 www.sublimetext.com 127.0.0.1 license.sublimehq.com ----- BEGIN LICENSE --- ...
- composer 遇见问题 整理
修改镜像源:改为阿里云镜像 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ 报错:Con ...
- hdu4278 小想法
题意: 有几个计数器,从1开始计数,计数器有问题,没有3,8这两个数字,只要出现3或者8,那么直接跳过,如 12579 下一个数字就是 12590 ,给你一个数字,问他实际计数了多少. 思 ...
- Python第一章-基础知识
第一章:基础知识 1.1 安装python. 直接官网下载最新的python然后默认安装就可以了,然后开始菜单里找到pyhton *.*.* Shell.exe运行python的交互shell ...