Java面向对象之抽象方法抽象类、接口的使用
一、抽象
1、简单说明
- 只是声明,并不去实现
- 抽象方法:
public abstract void act();
,没有方法体,直接结束,抽象方法只能存在于抽象类中。 - 抽象类:
public abstract class Test{}
,继承抽象类的子类必须重写父类中的方法(包括抽象方法),否则子类也必须是抽象类。
2、注意事项
(1)可以用于强制要求子类中必须有哪些方法,因为必须重写抽象父类的方法。
(2)抽象类不能实例化其他类的对象。
(3)不过,抽象类中可以有正常的方法,不一定都是抽象方法。
3、测试练习
- 在抽象类中实例化对象报错:
- 在继承了抽象类的普通子类中实例化对象不会报错:
abstract class Test06_Father{ //定义一个抽象类 //final常量final int height = 180;//在抽象类中定义抽象方法(抽象方法只能存在于抽象类中)public abstract void act0();//在抽象类中定义普通方法public void act1(){}public void act2(){}//在抽象类中实例化对象:会报错// Test06_Father tf = new Test06_Father();
}public class Test06_Son extends Test06_Father{ //子类继承一个抽象类//在继承了抽象类的子类中必须重写的父类方法public void act0(){System.out.println("第零次重写抽象方法……");}public void act1(){System.out.println("第一次重写普通方法……");}public void act2(){System.out.println("第二次重写普通方法……");}//在继承了抽象类的子类中定义正常执行的方法public void speeking(){System.out.println("我是不会变心的!!!");}//在子类中定义主方法public static void main(String[] args){//重新定义变量可以int height = 99; //在继承了抽象类的普通子类中实例化对象:不会报错Test06_Son ts = new Test06_Son(); ts.act0();ts.act1();ts.act2();ts.speeking(); //调用对象中的方法}
}
二、接口
1、简单说明
- 接口实际上是一种特殊的抽象类,里面所有内容都是公开的。
- 接口中所有的方法都是抽象方法(不可以有普通的方法),就相当于用抽象方法占个位。
- 使用interface来声明一个接口,在接口中定义抽象方法时可以不使用abstract。
2、注意事项
(1)接口中定义的属性必须是public static final的,而接口中定义的方法则
必须是public abstract的,因此这些修饰符可以部分或全部省略;
(2)接口中定义的属性的值在实现类中不能被更改;
(3)一个类只能实现某个接口,不能继承某个接口;但接口可以继承接口
接口不但可以继承接口,而且可以继承多个接口,即接口允许多继承;
(4)如果一个类只重写(实现)了一个接口的部分方法,则该类必须的声明为抽象类,否则就必须重写(实现)继承的接口中所有的抽象方法;
(5)一个类可以在继承一个父类的同时实现一个或多个接口,但extends关键字必须的在implements(实现)之前;
(6)不可以new接口对象,但可以定义–个接口引用类型的变量并将其指向
实现接口的对象,达到多态的目的。
3、测试练习
interface Test06_Valuable{ //定义一个接口(特殊类)//在接口中定义抽象方法:不需要使用abstractvoid getMoney();
}
class Test06_Gold implements Test06_Valuable{ //继承(实现)了接口的一个接口//在继承了接口的接口中必须重写(实现)父类的抽象方法(加个public提高访问权限)public void getMoney(){System.out.println("是金子总是值钱的!");}
}
public class Test06_Son{ //定义主方法的类public static void main(String[] args){Test06_Gold go = new Test06_Gold(); //实例化子接口对象go.getMoney(); //调用子接口对象中的方法//接口同样具有多态性Test06_Valuable tv = new Test06_Gold(); //向上赋值tv.getMoney(); }
}
Java面向对象之抽象方法抽象类、接口的使用相关推荐
- Java面向对象编程篇3——接口与抽象类
Java面向对象编程篇3--接口与抽象类 1.接口(interface) 接口中可以含有变量和方法.但是要注意,接口中的变量会被隐式地指定为public static final变量(并且只能是pub ...
- JAVA面向对象OOP多态→抽象类abstract、接口interface实现implement、final不变修饰符、样例代码
抽象类 抽象类-接口关系示意图 如果一个类实现接口,就要把接口中所有的抽象方法都重写. A接口继承另一个B接口时,类要重写AB两个接口的方法 如果只是实现部分接口,可以用抽象类实现. 抽象类与接口不同 ...
- 面向对象(final/抽象类/接口/内部类)
>final 关键字 1.final修饰类,这个类不能被被继承; 2.final修饰变量,这个变量的值不能发生改变,就是常量; 注意: final修饰的变量,必须要初始化赋值,否则报错; 赋值的 ...
- Java编程基础10——面向对象_多态抽象类接口
1.多态的概述及其成员访问特点代码体现 A:多态(polymorphic)概述 事物存在的多种形态 B:多态前提- 1.要有继承关系 2.要有方法重写 3.要有父类引用指向子类对象. C:多态中的成员 ...
- (十)Core Java 面向对象(封装,继承,多态,接口) -02 (96)
目录 : 24 ). 面向对象(聚集关系) 25 ). 面向对象(子父类中变量的特点) 26 ). 面向对象(子父类中函数的特点-覆盖) 27 ). 面向对象(子父类中构造函数的特点 ...
- Java面向对象(六)接口
抽象类中的抽象方法相当于模板 , 相比于抽象类 ,接口的模板作用更存粹 ,规范性更强 . 接口interface声明,在JDK1.7之前 , 接口中只能有抽象方法(默认修饰符 : public ...
- 韩顺平循序渐进学java 第13讲 抽象类.接口
13.1抽象类 13.1.1 概念 当父类的一些方法不能确定时,可以用abstract关键字来修饰该方法,称为抽象方法,用abstract来修饰该类,称为抽象类. 13.1.2 抽象类-深入讨论 抽象 ...
- Java面向对象(20)--接口
接口的使用 ①接口使用interface来定义 ②Java中,接口和类是并列的两个结构 ③定义接口中的成员 JDK7及以前:只能定义全局常量和抽象方法 全局常量: public static fina ...
- 零基础入门 自学 JAVA SE 基础篇(九)instanceof final 开闭原则 多态 抽象(abstract)方法与抽象类 接口(interface)
JAVA SE自学 基础篇 多态 instanceof final 开闭原则 多态 抽象(abstract)方法与抽象类 接口(interface) 目标 父类型与子类型之间的转换及instanceo ...
最新文章
- python使用matplotlib可视化、自定义移除Y轴指定轴刻度标签(removing specific axis ticks in matplotlib y axis)
- Windows 7 VHD 启动
- python代做在哪找靠谱_比较靠谱的资产评估师考试去哪找
- js监听只读文本框_js 动态控制 input 框 的只读属性
- oracle捕捉所有异常,如何捕获和处理特定的Oracle异常?
- Android开发环境配置介绍
- java集合的扩容研究
- Linux学习笔记014---文件及文件夹权限设置_以及文件、文件夹的删除_移动_复制操作
- [转][Err] 1452 - Cannot add or update a child row: a foreign key constraint fail
- [VS]网页连接数据库
- QScrollArea 动态添加控件问题
- [转]数码单反和普通数码相机的差别
- ACM大量习题题库及建议培养计划
- ios系统软件迁移到安卓_教你把ios系统移植到安卓手机
- msg文件转成html文件,如何将MSG格式的文件转换为PDF格式文件?
- python 中dtype 为object_DataFrame中的字符串,但dtype是对象
- 免费可商用的图片资源推荐
- 内推网创始人黄小亮:拒绝猎头的P2P招聘
- 基础篇章:React Native之 Image 的讲解
- shell 系统变量IFS
热门文章
- matplotlib 柱状图 分组_Python数据分析与可视化之matplotlib可视化(三)
- 文言文生成器_英语不好,学编程太困难?或许用文言文来编程你就更加容易上手了!...
- 蓝牙 sig base uuid_西圣XISEM真无线蓝牙耳机ASN体验:轻盈舒适,声音悦耳_
- Ant Design Pro在使用TreeSelect树选择组件时,报错未注册
- java点击按钮在控制台输出_java 怎么获取控制台的数据并且输出到GUI上
- shell信息查看脚本linux,每次登录Shell时使用shell脚本查看Linux上的系统信息
- 登录不了_12123APP登录不了肿么办?快来看这里!
- java拼装树_java 数据拼装成树结构
- mcldownload文件夹_《我的世界》中国版游戏空间精简教程 多余文件删除方法
- URL请求到Action的映射规则