java_基础_接口和抽象类
1.接口
java中接口的存在意义是:让多个继承该接口的类实现多态,让多个类有相同的特征
示例代码:
interface MyInterface{
void myMethod();
} class Test1 implements MyInterface{ @Override
public void myMethod() {
// TODO 自动生成的方法存根
System.out.println("test1");
} } class Test implements MyInterface{ @Override
public void myMethod() {
// TODO 自动生成的方法存根
System.out.println("test");
} public void test2(MyInterface me) {
me.myMethod();
} public static void main(String[] args) {
Test test = new Test();
test.myMethod();
Test1 test1= new Test1();
test1.myMethod();
test.test2(new MyInterface() {
@Override
public void myMethod() {
// TODO 自动生成的方法存根
System.out.println("test2");
}
}); }
}
基本用法就如上,被红色标注的是接口的匿名内部实现方法,也算是一种写法了
输出如下:
test
test1
test2
2.抽象类
抽象类内部可以有完善的方法,但是不可以被实例化,只能够被间接的调用内部方法以及参数,比如在当做参数传递的时候,以及在非静态方法中使用super调用
示例代码:
abstract class MyAbstractClass{
abstract void myMethod(); void myAbstractClass() {
System.out.println("hello myAbstract");
}
} class Test1 extends MyAbstractClass{ @Override
public void myMethod() {
// TODO 自动生成的方法存根
System.out.println("test1");
} } class Test extends MyAbstractClass{ @Override
public void myMethod() {
// TODO 自动生成的方法存根
System.out.println("test");
} public void test2(MyAbstractClass me) {
me.myMethod();
me.myAbstractClass();
super.myAbstractClass();
} public static void main(String[] args) {
Test test = new Test();
test.myMethod();
Test1 test1= new Test1();
test1.myMethod();
test.test2(new MyAbstractClass() {
@Override
public void myMethod() {
// TODO 自动生成的方法存根
System.out.println("test2");
}
}); }
}
基本用法和接口是一样的,只不过接口中不能有完善的方法,而且不用abstract关键字,抽象类中抽象方法一定要用abstract关键字
输出如下:
test
test1
test2
hello myAbstract
hello myAbstract
希望能够帮到大家
以上
java_基础_接口和抽象类的更多相关文章
- Java千百问_05面向对象(005)_接口和抽象类有什么差别
点击进入_很多其它_Java千百问 1.接口和抽象类有什么差别 在Java语言中.抽象类abstract class和接口interface是抽象定义的两种机制. 正是因为这两种机制的存在,才赋予了J ...
- python开发面向对象基础:接口类&抽象类&多态&钻石继承
一,接口类 继承有两种用途: 一:继承基类的方法,并且做出自己的改变或者扩展(代码重用) 二:声明某个子类兼容于某基类,定义一个接口类Interface,接口类中定义了一些接口名(就是函数名)且并未实 ...
- 【Java基础】接口和抽象类之间的对比
Java 中的接口和抽象类之间的对比 一.接口 Interface,将其翻译成插座可能就更好理解了.我们通常利用接口来定义实现类的行为,当你将插座上连接笔记本的三角插头拔掉,换成微波炉插上去的时候,你 ...
- Java基础之接口与抽象类及多态、内部类
final关键字 被其修饰的类,不能被继承. 被其修饰的方法,不能被覆盖. 被其修饰的变量,是一个常量,不能被修改,所以定义时必须初始化(和C++的const类似). 一般有final,会搭配stat ...
- Java基础——关于接口和抽象类的几道练习题
呃,一定要理解之后自己敲!!!这几道题,使我进一步了解了接口和抽象类. 1.设计一个商品类 字段: 商品名称,重量,价格,配件数量,配件制造厂商(是数组,因为可能有多个制造厂商) 要求: 有构造函数 ...
- C#_接口与抽象类
.Net提供了接口,这个不同于Class或者Struct的类型定义.接口有些情况,看似和抽象类一样,因此有些人认为在.Net可以完全用接口来替换抽象类.其实不然,接口和抽象类各有长处和缺陷,因此往往在 ...
- Java基础(四)--接口和抽象类
接口和抽象类能够体现OOP的抽象,而接口和抽象类也是日常开发中经常用到的 抽象方法: 抽象方法就是被abstract修饰的方法,只有声明,没有实现,也就是没有方法体 public abstract v ...
- 30.Java基础_接口_抽象类_具体类实现案例
public interface SpeakEnglish { public abstract void speak(); } public abstract class Person { priva ...
- 【java基础】接口VS抽象类
1.至少有一个被abstract修饰的方法,同时修饰类名的类为抽象类,抽象的方法必须被子类覆盖,抽象的类必须被继承,抽象的类可以包含非抽象方法,只能单继承. 2.接口中所有的变量是static fin ...
随机推荐
- Accoridion折叠面板
详细操作见代码: <!doctype html> <html> <head> <meta charset="UTF-8"> < ...
- Win10 自定义右键新建菜单
Win10 自定义右键新建菜单 regedit打开: 计算机\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ ...
- Celery - 一个懂得 异步任务 , 定时任务 , 周期任务 的芹菜
1.什么是Celery?Celery 是芹菜Celery 是基于Python实现的模块, 用于执行异步定时周期任务的其结构的组成是由 1.用户任务 app 2.管道 broker 用于存储 ...
- PYthon3:函数实现“自动售卖机”功能
题目: 自动贩卖机: # 只接受1元.5元.10元的纸币或硬币,可以1块,5元,10元.# 饮料只有橙汁.椰汁.矿泉水.早餐奶,售价分别是3.5,4,2,4.5# 写一个函数用来表示贩卖机的功能:用户 ...
- Python mac安装mysqlclient的一个bug
这是一个来自mysql官方的bug,反正我是看不懂. shuais-MBP:wxapp dandyzhang$ pipenv install mysqlclient Installing mysqlc ...
- Django模型层-单表操作
ORM介绍 MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员的 ...
- 【原创】大数据基础之Ambari(1)简介、编译安装、使用
官方:http://ambari.apache.org/ The Apache Ambari project is aimed at making Hadoop management simpler ...
- SQLAlchemy 使用(一)创建单一model
前言 最近项目等待前端接接口,比较空闲.就想学习一些新东西.学啥呢?考虑到ORM的易用性,还是学习一下ORM.那么与Flask搭配的ORM有 flask-sqlalchemy 但是该组件专为Flask ...
- ie浏览器多开-----同时登陆多个账号
1.在电脑桌面右键 找到 新建快捷方式 在上图输入框中输入 "C:\Program Files\Internet Explorer\iexplore.exe" -noframeme ...
- java连接163邮箱发送邮件
一:jar包:下载链接:链接: http://pan.baidu.com/s/1dDhIDLv 密码: ibg5二:代码 1-------------------------------------- ...