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 ...
随机推荐
- Trie树的二三事QWQ
写在前面 Trie,又称字典树,是一种用于实现字符串快速检索的多叉树结构.Trie的每个结点都拥有若干字符指针,若在插入或检索字符串时扫描到一个字符c,就沿着当前节点的c这个字符指针,走向该指针指向的 ...
- mysql语句实战
请创建如下表,并创建相关约束 二.操作表 1.自行创建测试数据 2.查询“生物”课程比“物理”课程成绩高的所有学生的学号: 这个比较难, 3.查询平均成绩大于60分的同学的学号和平均成绩: 4.查 ...
- Django组件-用户认证
用户认证 一.auth模块 from django.contrib import auth django.contrib.auth中提供了许多方法,这里主要介绍其中的三个: 1.1 .authenti ...
- js 中arguments,call,apply,bind的使用
//对于 arguments和this, 每个函数都有自己独有的arguments和this, 且不进行链式查找 //arguments是什么? //答:1:arguments是收到的实参副本 //2 ...
- 结构体重载运算符&srand&rand
先上代码,再按代码讲解 #include<stdio.h>#include<string.h>#include<stdlib.h>#include<time. ...
- JAVA 得到数组的长度
package Code411; //得到数组的长度// 使用 array.length public class CodeArrayLength { public static void main( ...
- echarts tree 树型图层级距离设置
网上找了半天,没有找到设置层级距离的属性,默认是自动适应的,无奈只能改源码,分享出来希望可以帮到有相同需求的... 上github下载echarts源码包,打开src=>chart=>tr ...
- leetcode目录
Leetcode 1. 数组 2. 动态规划 3. 字符串 4. 链表.双指针.排序 5. 树 6. 回溯算法.贪心算法.分治算法.
- ABP使用Miniprofiler监测EF
在上篇教程中,我们在WebApi项目中集成了Miniprofiler,本篇文章中,将继续集成Miniprofiler EF6,以实时监测分析EF的执行语句.执行效率等.Miniprofiler会针对E ...
- kubernetes核心概念
摘抄自: https://www.cnblogs.com/zhenyuyaodidiao/p/6500720.html 1.基础架构 1.1 Master Master节点上面主要由四个模块组成:A ...