继承(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四大特性理解(封装继承多态抽象)
封装: 封装是把过程和数据包围起来,对数据的访问只能通过已定义的接口.面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治.封装的对象,这些对象通过一个受保护的接口访问其他对象.封装是一 ...
随机推荐
- Java多线程编程(同步、死锁、生产消费者问题)
Java多线程编程(同步.死锁.生产消费): 关于线程同步以及死锁问题: 线程同步概念:是指若干个线程对象并行进行资源的访问时实现的资源处理保护操作: 线程死锁概念:是指两个线程都在等待对方先完成,造 ...
- 【运维】Shell -- 快速上手Shell脚本
1.Shell概述 shell脚本是利用shell的功能所写的一个[程序(program)].这个程序是使用纯文本文件,将一些shell的语法与命令(含外部命令)写在里面,搭配正则表达式.管道命令与数 ...
- Mysql之读写分离架构-Atlas
Atlas介绍 1.png Atlas是由 Qihoo 360, Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目. 它是在mysql-proxy 0.8.2版本的基础上, ...
- 图解高性能网络架构:Reactor 和 Proactor
小林,来了. 这次就来图解 Reactor 和 Proactor 这两个高性能网络模式. 别小看这两个东西,特别是 Reactor 模式,市面上常见的开源软件很多都采用了这个方案,比如 Redis.N ...
- SpringBoot自动装配,比较全的吧,来看看吧~
文章挺长,表达不好,希望能有获~~~~~~~ Spring也提供使用注解来注册bean,为什么要用SpringBoot呢? 使用Spring应用,比如SpringMVC还行需要配置ViewResolv ...
- 读取ini配置文件 及 UI对象库
读取ini配置文件 配置项 读取API 写入API 实战:UI 对象库 读取ini配置文件 配置项 在每个 ini 配置文件中,配置数据会被分组(比如下述配置文件中的"config" ...
- jira 改变issue状态触发jenkins构建/发布
目录 jira中issue状态的改变触发Jenkins构建 jira中定制新的workflow,作为jenkins发布使用流程 大家可以参考我的这个workflow 设置workflow 使用Tran ...
- 1438. Longest Continuous Subarray With Absolute Diff Less Than or Equal to Limit
Given an array of integers nums and an integer limit, return the size of the longest continuous suba ...
- hdu4847 水题
题意: 你看了上面很长很长的一片英语课文之后,发现根本不用看,直接看输入输出就行了,就是给你一坨字符串,然后问你里面有几个doge(不区分大小写). 思路: 没啥说的,直接写吧 ...
- hdu1435 稳定婚姻问题
题意: Stable Match Special Judge Problem Description Network 公司的BOSS 说现在他们公司建立的信号发射站和接收站经常出现信号发送接收不稳定的 ...