day09 多态抽象类接口
多态抽象类接口
- 1:final关键字可以干什么?有什么特点?
- 2:final关键字的面试题?
- 3:多态是什么,前提是什么?
- 4:多态中成员访问的特点?
- 5:多态的好处及弊端?如何解决多态的弊端?
- 6:什么是向上转型?什么是向下转型?
- 7:多态练习
- 8:抽象类概述及其特点?
- 9:抽象类成员特点?
- 10:抽象类练习?
- 11:抽象类的小问题
- 12:接口的概述及其特点?
- 13:接口的成员特点?
- 14:接口的练习
- 15:抽象类和接口的区别?
- 16:案例
1:final关键字可以干什么?有什么特点?
修饰类、方法、属性和变量
- final 修饰类,则该类不允许被继承,为最终类
- final 修饰方法,则该方法不允许被覆盖(重写)
- final 修饰属性:则该类的属性不会进行隐式的初始化(类的初始化属性必须有值)或在构造方法中赋值(但只能选其一)
- final 修饰变量,则该变量的值只能赋一次值,即常量
2:final关键字的面试题?
A:修饰局部变量
B:初始化时机
a:基本类型 值不能发生改变
b:引用类型 地址值不能发生改变,但是对象的内容是可以改变的
a:只能初始化一次
b:常见的给值
定义的时候(推荐)
构造方法中
3:多态是什么,前提是什么?
- 允许不同类的对象对同一消息做出响应
- 同一个对象在不同时刻体现出来的不同状态
A:有继承或者实现关系
B:有方法重写
C:有父类或者父接口引用指向子类对象 (向上转型)
4:多态中成员访问的特点?
成员变量
成员方法
静态方法
A:成员变量
编译看左边,运行看左边
B:构造方法
子类的构造都会默认访问父类构造
C:成员方法
编译看左边,运行看右边
D:静态方法
编译看左边,运行看左边
为什么?
因为成员方法有重写
5:多态的好处及弊端?如何解决多态的弊端?
多态的好处:
A:提高代码的维护性(继承体现)
B:提高代码的扩展性(多态体现)
多态的弊端:
父不能使用子的特有功能
现象:子可以当作父使用,父不能当作子使用
6:什么是向上转型?什么是向下转型?
A:向上转型
从子到父
B:向下转型
从父到子
强转符 ()
Man m = (Man)p;可能ClassCastException异常使用instanceof在进行向下转型前判断
if(p instnceof Man) {Man m = (Man)p;
}
7:多态练习
class Animal {//父类方法public void bark() {System.out.println("动物叫!");}
}
class Dog extends Animal {//子类重写父类的bark方法public void bark() {System.out.println("汪、汪、汪!");}//子类自己的方法public void dogType() {System.out.println("这是什么品种的狗?");}
}
public class Test {public static void main(String[] args) {Animal a = new Animal();Animal b = new Dog();Dog d = new Dog();a.bark();b.bark();//b.dogType();//b.dogType()编译不通过d.bark();d.dogType();}}
8:抽象类概述及其特点?
在定义类时,前面加上 abstract 关键字修饰的类叫抽象类
抽象就是看不懂的
A:抽象类和抽象方法必须用关键字abstract修饰
B:抽象类中不一定有抽象方法,但是有抽象方法的类一定是抽象类
C:抽象类不能实例化
D:抽象类的子类
a:是一个抽象类
b:是一个具体类这个类必须重写抽象类中的所有抽象方法
9:抽象类成员特点?
A:成员变量
有变量,有常量
B:构造方法
有构造方法
C:成员方法
有抽象,有非抽象
10:抽象类练习?
// 抽象方法
public abstract class TelePhone {public abstract void call(); //抽象方法,打电话public abstract void message(); //抽象方法,发短信
}
// 构建子类,并实现抽象方法
public class CellPhone extends TelePhone {@Overridepublic void call() {System.out.println("我可以打电话!");}@Overridepublic void message() {System.out.println("我可以发短信!");}public static void main(String[] args) {CellPhone cp = new CellPhone();cp.call();cp.message();}}
11:抽象类的小问题
A:一个类如果没有抽象方法,可不可以定义为抽象类?如果可以,有什么意义?
B:[abstract不能和哪些关键字共存](https://blog.csdn.net/qq_29842929/article/details/53536807)
可以 不让创建对象
a:final 冲突
b:private 冲突
c:static 无意义
12:接口的概述及其特点?
接口用于描述类所具有的功能,而不提供功能的实现,
功能的实现需要写在实现接口的类中,并且该类必须实现接口中所有的未实现方法
A:接口用关键字interface修饰
interface 接口名 {}
B:类实现接口用implements修饰
class 类名 implements 接口名 {}
C:接口不能实例化
D:接口的实现类
a:是一个抽象类
b:是一个具体类,这个类必须重写接口中的所有抽象方法
13:接口的成员特点?
A:成员变量
只能是常量
默认修饰符:public static final
B:构造方法
没有构造方法
C:成员方法
只能是抽象的
默认修饰符:public abstract
14:接口的练习
// Cat.java
public class Cat implements Animal{public void eat(){System.out.println("Cat eats");}public void travel(){System.out.println("Cat travels");}public static void main(String[] args) {Cat cat = new Cat();cat.eat();cat.travel();}
}
15:抽象类和接口的区别?
区别
A:成员区别
抽象类:
接口:
B:关系区别:
类与类:
类与接口:
接口与接口:
C:设计理念不同
抽象类:is a,抽象类中定义的是共性功能
接口:like a,接口中定义的是扩展功能
相同:
都不能创建对象
都可以定义抽象方法,并且一定要在子类中重写
不同:
关键字不同abstract interface
抽象方法中既可以有抽象的方法也可以有普通的方法
接口中中所有的方法都是抽象方法
抽象类的方法可以任意权限,接口中方法只能是public
抽象类只能单继承,接口可以多实现
16:案例
[猫狗案例,加入跳高的额外功能](https://blog.csdn.net/dai_ma_dong/article/details/95896248)
[老师和学生案例,加入抽烟的额外功能](https://blog.csdn.net/qq_23973805/article/details/79121017)
[教练和运动员案例(学生分析然后讲解)](https://blog.csdn.net/lcn_Lynn/article/details/74989842)
day09 多态抽象类接口相关推荐
- 继承 多态 抽象类 接口
面向对象编程 包 继承 组合 多态 抽象类 接口 包 包(package)是组织类的一种方式. 使用包的主要目的是保证类的唯一性. java中已经提供给我们很多现成的类供我们选择,例如可以使用 imp ...
- 初始Java Java SE 包,继承,组合,多态,抽象类,接口
目录 包 1.静态导入 2.将类放到包中 3.包的访问权限控制 继承 基本语法: 注意事项: protected 关键字 final 关键字 组合 多态 向上转型: 动态绑定 方法重写 重写的规则 : ...
- JavaSE 多态 抽象类 接口
day09目录: 多态(动态绑定机制)多态的概述多态的成员访问特点多态的好处和弊端向上转型和向下转型多态内存图 抽象类抽象类的概述抽象类的成员特点抽象类的案例 接口接口的概述接口的成员特点类与类,类与 ...
- Java编程基础10——面向对象_多态抽象类接口
1.多态的概述及其成员访问特点代码体现 A:多态(polymorphic)概述 事物存在的多种形态 B:多态前提- 1.要有继承关系 2.要有方法重写 3.要有父类引用指向子类对象. C:多态中的成员 ...
- javaSE各阶段练习题--面向对象-多态-抽象类-接口
1 (多态)定义榨汁机JuiceMachine 有榨汁方法makeJuice,传入相应的水果.如果传入的是Apple 输出 "流出苹果汁"传入的是Orange 输出 "流 ...
- java自学 part2 数组 类和对象 包 继承 多态 抽象类 接口
数组:arr 获取数组的长度:arr.length 数组转字符串: Arrays.toString(arr) 数组的拷贝: Arrays.copyOf(arr,arr.length) 数组的排序:Ar ...
- java 多态 接口_从零开始的Java日常: 多态,抽象类,接口
欢迎关注微博:@小白程序员的日常 欢迎关注微博超话:#小白程序员的日常# 本人目前在自学java,会不间断更新java知识 同为小白或者有大佬可以一起探讨一下 一.多态 1.什么是多态 同一个对象,在 ...
- java ee2019 11 5关于多态 抽象类 接口
1 猫狗案例 多态版(继承版) class Animal{//成员方法private String name ; private int age ;//无参构造public Animal(){}//有 ...
- object+多态+抽象类+接口
一.object 定义:object是java所有类的父类,Java中所有类都直接或间接的继承object,Java是单继承机制·,·一个类如果没有显示继承其他类时,就默认他继承object类 常用方 ...
最新文章
- java 增强for循环(foreach)
- Ubuntu阿里云搭建Mono.net环境
- 更新elementui图标不显示_超简单elementui主题及变量修改方案
- 【Selenium】导出成py脚本的基础使用
- 一线大厂Java开发所需掌握的技能要点汇总
- awx文件解析_Android so(ELF)文件解析
- CSS自学笔记(16):CSS3 用户界面
- Centos7制作局域网http的yum源
- 7-5 列出连通集 (6 分)
- 诗与远方:无题(二十七)- 写给我妹妹的一首诗
- 基于柯西矩阵的Erasure Code技术详解
- 为什么我们更宠爱“随机”梯度下降?(SGD)
- Python网页简单小爬虫
- 【redis】spring boot利用redis的Keyspace Notifications实现消息通知
- 验后方差估计python,python的哪个统计模块支持事后检验(Tukey,Scheffe或其他)的一种方差分析?...
- 【漏洞利用】逻辑漏洞之任意账号密码重置详解
- TouchScript模拟鼠标点击
- 学生信息管理系统-结构体编写
- 2019年谷歌SEO排名主要因素
- 脱离实际,技术就是屠龙之技
热门文章
- Typescript - any / unknown 类型及二者区别(详细入门教程)
- orchard mysql_最强的.NET开源CMS - Orchard使用说明
- mfc textout输出字体设置
- Qwt使用总结,初步整理
- JavaScript 实现字符串驼峰式与下划线式互相转换
- 回文指的是一个字符串从前面读和从后面读都一样,编写一个算法判断一个字符串是否为回文。
- jquery隐藏html标签,jquery如何将a标签隐藏了
- 雪城大学的史密斯计算机与工程学院,最注重冒险精神的大学|雪城大学
- 计算机设计计划进度安排怎么写,软件产品开发进度计划表.docx
- 亲爱的你是我今生等待的人