泛型 抽象类 接口 继承 总有你想知道的 ~~学渣系列

首先先来说说泛型

public interface IProfile<T> extends IIdentifyable<T> 
public interface Tagable<T> {
AbstractDrawerItem<T, VH extends RecyclerView.ViewHolder> implements IDrawerItem<T, VH>, Selectable<T>, Tagable<T> {
image.png

看到这些迷糊没。这些都是泛型
当然<> 里面的
知识点
Java泛型中的标记符含义:
E - Element (在集合中使用,因为集合中存放的是元素)
T - Type(Java 类)
K - Key(键)
V - Value(值)
N - Number(数值类型)
? - 表示不确定的java类型
S、U、V - 2nd、3rd、4th types

Object跟这些标记符代表的java类型有啥区别呢?
Object是所有类的根类,任何类的对象都可以设置给该Object引用变量,使用的时候可能需要类型强制转换,但是用使用了泛型T、E等这些标识符后,在实际用之前类型就已经确定了,不需要再进行类型强制转换。

说白了 泛型就是给你的对象一个限制条件,当你调用这个对象的时候 你需要给这个调用对象一个限制。

public interface A<T> {
    void a();
    T B();
}

public abstract class B<T>  implements  A<T>{
    @Override
    public void a() {

    }

    @Override
    public T B() {
        return null;
    }
}

public class c extends B  implements  A{

}

先来给新手一点小的需要注意的地方。 在你写抽象类的时候 B的这个泛型是一个要给的<T> 要不编译不过去。这个是因为你的接口A中泛型不知道去哪里寻找你给B一个泛型,他就可以找到。或者还可以在写B的时候你直接就给A一个固定的比如
implements A<String> 也是可以的

另外小知识点
B是一个抽象类 大家注意听


image.png

抽闲类B中实现接口中的方法。那么C中调用了接口A也是不用实现具体方法的。 因为在父类B中已经调用了A的方法。

另外再说几个知识点
抽象方法必须用abstract关键字进行修饰。如果一个类含有抽象方法,则称这个类为抽象类,抽象类必须在类前用abstract关键字修饰。因为抽象类中含有无具体实现的方法,所以不能用抽象类创建对象。
  下面要注意一个问题:在《JAVA编程思想》一书中,将抽象类定义为“包含抽象方法的类”,但是后面发现如果一个类不包含抽象方法,只是用abstract修饰的话也是抽象类。也就是说抽象类不一定必须含有抽象方法。但是正常人不会那么去写

抽象类和接口 是不能实例化的,这个大家都清楚。实现接口就要实现全部方法。继承抽象类就是实现抽象方法。他的存在就是为了别人去继承。抽象类本身就是大部分就是继承别的类。这个其实就是多继承。因为继承只能一次。所以这种情况抽象类在继承别的类。在继承抽象类就相当于继承多个类。

1)抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public。

  2)抽象类不能用来创建对象;

  3)如果一个类继承于一个抽象类,则子类必须实现父类的抽象方法。如果子类没有实现父类的抽象方法,则必须将子类也定义为为abstract类。

  在其他方面,抽象类和普通的类并没有区别。

抽象类和接口的区别和作用
1.语法层面上的区别

1)抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract 方法;

2)抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的;

3)接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法;

4)一个类只能继承一个抽象类,而一个类却可以实现多个接口。

作用?
为什么会出现这个两种
抽象类是对一种事物的抽象,即对类抽象,而接口是对行为的抽象。抽象类是对整个类整体进行抽象,包括属性、行为,但是接口却是对类局部(行为)进行抽象。

具体例子 人和动物
interface 行为{
public abstract void 吃饭();
public abstract void 睡觉();
}
这就是接口、“”有没有“” 关系。 人和动物都有行为这接口的行为。实现接口后去实现个子的方法

abstract class 人{
public abstract void 走();
public abstract void 跑();
}

后续出现的男人女人等 是不是 人, 他是一个 “”是不是的关系“”,是的话就去继承

所以大家稍微有点影响了吧、 接口和抽象类的大致区别
一个是有没有公共的行为(接口)
是不是同一个对象(抽象类)

下面转圈圈


image.png

还是上面的几个类哦~~~

public class c extends B<String>  implements  A<String>{

这个不报错

}

~~~~~~~~~~~~~~~~~~~~~
public class c extends B  implements  A{
这个不报错

}

~~~~~~~~~~~~~~~~~~~~~
public class c extends B<>  implements  A<c>{
这个报错

}
~~~~~~~~~~~~~~~~~~~~~
public class c extends B<c>  implements  A{
这个报错

}
~~~~~~~~~~~~~~~~~~~~~

public class c extends B<c>  implements  A<c> {
这个不报错
为什么?

}


public abstract class B<T>  implements  A<T>{
    @Override
    public void a() {

    }

    @Override
    public T B() {
        return null;
    }
}
因为在抽象类B 中你的定义 AB 是要一样的  在c中不一样。 那是肯定会报错的。

哦对了。当一个类实现的接口中父类也实现的话。那么在子类或者父类中实现一次就好
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 151,829评论 1 331
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 64,603评论 1 273
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 101,846评论 0 226
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 42,600评论 0 191
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 50,780评论 3 272
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 39,695评论 1 192
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,136评论 2 293
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 29,862评论 0 182
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,453评论 0 229
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 29,942评论 2 233
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,347评论 1 242
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 27,790评论 2 236
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,293评论 3 221
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,839评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,448评论 0 181
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 34,564评论 2 249
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 34,623评论 2 249

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,275评论 18 399
  • (一)Java部分 1、列举出JAVA中6个比较常用的包【天威诚信面试题】 【参考答案】 java.lang;ja...
    独云阅读 6,900评论 0 62
  • 一、继承和多态在面向对象编程中,继承(也称为派生)让您能够创建新类,而这些类继承了父类(也称为基类)的特征和行为。...
    CarlDonitz阅读 788评论 0 2
  • 在经过一次没有准备的面试后,发现自己虽然写了两年的android代码,基础知识却忘的差不多了。这是程序员的大忌,没...
    猿来如痴阅读 2,731评论 3 10
  • 毕竟,读懂生活的人不多 我也不是一直笑着 累了笑着,倦了还得笑着 毕竟,捧着我的心的人不多 爱了笑着,痛了还得笑着...
    Tian彦华阅读 176评论 10 10