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_基础_接口和抽象类的更多相关文章

  1. Java千百问_05面向对象(005)_接口和抽象类有什么差别

    点击进入_很多其它_Java千百问 1.接口和抽象类有什么差别 在Java语言中.抽象类abstract class和接口interface是抽象定义的两种机制. 正是因为这两种机制的存在,才赋予了J ...

  2. python开发面向对象基础:接口类&抽象类&多态&钻石继承

    一,接口类 继承有两种用途: 一:继承基类的方法,并且做出自己的改变或者扩展(代码重用) 二:声明某个子类兼容于某基类,定义一个接口类Interface,接口类中定义了一些接口名(就是函数名)且并未实 ...

  3. 【Java基础】接口和抽象类之间的对比

    Java 中的接口和抽象类之间的对比 一.接口 Interface,将其翻译成插座可能就更好理解了.我们通常利用接口来定义实现类的行为,当你将插座上连接笔记本的三角插头拔掉,换成微波炉插上去的时候,你 ...

  4. Java基础之接口与抽象类及多态、内部类

    final关键字 被其修饰的类,不能被继承. 被其修饰的方法,不能被覆盖. 被其修饰的变量,是一个常量,不能被修改,所以定义时必须初始化(和C++的const类似). 一般有final,会搭配stat ...

  5. Java基础——关于接口和抽象类的几道练习题

    呃,一定要理解之后自己敲!!!这几道题,使我进一步了解了接口和抽象类. 1.设计一个商品类 字段: 商品名称,重量,价格,配件数量,配件制造厂商(是数组,因为可能有多个制造厂商) 要求: 有构造函数 ...

  6. C#_接口与抽象类

    .Net提供了接口,这个不同于Class或者Struct的类型定义.接口有些情况,看似和抽象类一样,因此有些人认为在.Net可以完全用接口来替换抽象类.其实不然,接口和抽象类各有长处和缺陷,因此往往在 ...

  7. Java基础(四)--接口和抽象类

    接口和抽象类能够体现OOP的抽象,而接口和抽象类也是日常开发中经常用到的 抽象方法: 抽象方法就是被abstract修饰的方法,只有声明,没有实现,也就是没有方法体 public abstract v ...

  8. 30.Java基础_接口_抽象类_具体类实现案例

    public interface SpeakEnglish { public abstract void speak(); } public abstract class Person { priva ...

  9. 【java基础】接口VS抽象类

    1.至少有一个被abstract修饰的方法,同时修饰类名的类为抽象类,抽象的方法必须被子类覆盖,抽象的类必须被继承,抽象的类可以包含非抽象方法,只能单继承. 2.接口中所有的变量是static fin ...

随机推荐

  1. ceph简单用户管理

    列出所有用户 ceph auth list 获取指定用户 ceph auth get client.admin 新增用户并输出密钥环 ceph auth get-or-create client.ge ...

  2. 写博客常用MarkDown语法

    目录 前言 1. 制作目录 2. 命令格式: 3. 超链接 4.上标和下标 5.引用 6.分割线 7.给图片添加图注 参考 前言 ​ 自己记性不是很好,导致每次写MarkDown文本时总是忘了一些重要 ...

  3. 萌新的IDEA_web开发笔记(未完)

    萌新IDEA_web开发笔记 按兴趣自己搞的网页: http://47.94.140.98:8080/ow_web/my_web/web/ 暂时还没做完. 部署在租的服务器上面,背景视频加载可能有点慢 ...

  4. linux文件系统初始化过程(3)---加载initrd(上)

    一.目的 本文主要讲述linux3.10文件系统初始化过程的第二阶段:加载initrd. initrd是一个临时文件系统,由bootload负责加载到内存中,里面包含了基本的可执行程序和驱动程序.在l ...

  5. upgrade openssl

    01  OpenSSL version wiki:https://en.wikipedia.org/wiki/OpenSSL 02 Using TLS1.3 With OpenSSL https:// ...

  6. python使用stomp连接activemq

    一.安装ActiveMQ服务 1. 当使用windows时,安装参考:https://blog.csdn.net/WuLex/article/details/78323811 启动:运行activem ...

  7. vue-cli新版 -- 记录

    1.新版Vue CLI 项目天生支持 PostCSS.CSS Modules 和包含 Sass.Less.Stylus 在内的预处理器. 所以安装了less后者sass可以直接使用,不需要再像以前在w ...

  8. Error: Could not find or load main class Test

    问题描述 Linux 环境下运行 Java 程序时,执行 javac Test.java 生成 Test.class 文件,再执行 java Test 时报错:Error: Could not fin ...

  9. 忘记加入spring-aop-4.3.16.RELEASE.jar出错

    出错代码: java.lang.NoClassDefFoundError: org/springframework/aop/framework/AopProxyUtils at org.springf ...

  10. python-argparse使用

    官方文档:https://docs.python.org/zh-cn/3.7/library/argparse.html?highlight=argparse#module-argparse argp ...