最新零基础Java学习之接口(1),mysql复合索引面试题

总结

这份面试题几乎包含了他在一年内遇到的所有面试题以及答案,甚至包括面试中的细节对话以及语录,可谓是细节到极致,甚至简历优化和怎么投简历更容易得到面试机会也包括在内!也包括教你怎么去获得一些大厂,比如阿里,腾讯的内推名额!

某位名人说过成功是靠99%的汗水和1%的机遇得到的,而你想获得那1%的机遇你首先就得付出99%的汗水!你只有朝着你的目标一步一步坚持不懈的走下去你才能有机会获得成功!

成功只会留给那些有准备的人!

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

接口实现需要注意:

  • 必须重写接口中所有抽象方法。
  • 继承了接口的默认方法,即可以直接调用,也可以重写。
重写时,default单词就不要再写了,它只用于在接口中表示默认方法,到类中就没有默认方法的概念了
  • 不能重写静态方法
  • 如果多个接口中有抽象方法有重名的,只需要重写一次

代码示例

public interface Attack {

void attack();

}

public interface Fly extends Aa,Ba{

int id = 1; // 默认共有的静态常量

void method(); //默认共有的抽象方法

}

public class Aircraft implements Fly,Attack {

//所有的抽象方法都得实现

@Override

public void attack() {

System.out.println(“攻击”);

}

@Override

public void method() {

}

}

接口中方法的调用


说明

对于接口的抽象方法、默认方法,通过实现类对象就可以调用;

但是对于接口的静态方法,必须使用接口名才能调用

代码实例

public interface Fly {

public void fly(); //抽象方法

//静态方法(默认共有的)

static void staticMethod(){

System.out.println(“Fly中的静态方法”);

}

//默认方法

default void defauleMethod(){

System.out.println(“Fly中的默认方法”);

}

}

public class Aircraft implements Fly {

@Override

public void fly() {

System.out.println(“飞机会飞”);

}

@Override

public void defauleMethod() {

System.out.println(“飞机重写的默认方法”);

}

}

public class Demo1 {

public static void main(String[] args) {

Fly.staticMethod();//接口的静态方法可以通过接口名调用

Aircraft aircraft = new Aircraft();

// aircraft.staticMethod(); 静态方法不能通过对象调用

// Fly.defaultMethod(); 默认方法不能通过接口调用调用

aircraft.defauleMethod();//默认方法通过对象调用

}

}

接口的继承


说明

一个接口能继承另一个接口,和类之间的继承方式比较相似。接口的继承使用extends关键字,子接口继承父接口的方法。在Java中,类的多继承是不合法,但接口允许多继承(类的扩展的体现)。在接口的多继承中extends关键字只需要使用一次,在其后跟着其他需要继承接口。

语法格式

public interface 接口名1 extends 接口名2 【, 接口名2,…】{ }

子接口继承父接口的方法;如果实现了某一个接口,其父类的抽象方法也必须实现

子接口重写默认方法时,default关键字可以保留。

代码示例

interface A {

void a();

public default void methodA(){

System.out.println(“接口A的方法”);

}

}

interface B {

void b();

public default void methodB(){

System.out.println(“接口B的方法”);

}

}

interface C extends A,B{

@Override

public default void methodB() {

System.out.println(“接口C的方法”);

}

}

class D implements C{

@Override

public void a() {

System.out.println(“xxxxx”);

}

@Override

public void b() {

System.out.println(“yyyyy”);

}

}

标记接口


介绍

最常用的继承接口是没有包含任何方法的接口,称为标记接口。

标记接口是没有任何方法和属性的接口。它仅仅表明它的类属于一个特定的类型,供其他代码来测试允许做一些事情。

标记接口作用

简单形象的说就是给某个对象打个标(盖个戳),使对象拥有某个或某些特权。

  • 建立一个公共的父接口:

你可以使用一个标记接口来建立一组接口的父接口。例如:当一个接口继承了EventListener接口,Java虚拟机(JVM)就知道该接口将要被用于一个事件的代理方案。

  • 向一个类添加数据类型:

这种情况是标记接口最初的目的,实现标记接口的类不需要定义任何接口方法(因为标记接口根本就没有方法),但是该类通过多态性变成一个接口类型。

举例

java.awt.event 包中的 MouseListener 接口继承的 java.util.EventListener 接口定义如下:

package java.util;

public interface EventListener{ }

经典接口介绍


java.lang.Comparable

基本数据类型的数据(除boolean类型外)需要比较大小的话,直接使用比较运算符即可,但是引用数据类型是不能直接使用比较运算符来比较大小的,而这个又是比较常用的。那么,如何解决这个问题呢?

Java给所有引用数据类型的大小比较方式,即指定了一个标准接口,就是java.lang.Comparable接口:

package java.lang;

public interface Comparable{

int compareTo(Object obj);

}

如果想要比较某个类的对象的大小时候时,按照如下步骤执行:

第一步:哪个类的对象要比较大小,哪个类就实现java.lang.Comparable接口,并重写方法

  • 方法体就是你要如何比较当前对象和指定的另一个对象的大小

第二步:对象比较大小时,通过对象调用compareTo方法,根据方法的返回值决定谁大谁小。

  • this对象(调用compareTo方法的对象)大于指定对象(传入compareTo()的参数对象)返回正整数

  • this对象(调用compareTo方法的对象)小于指定对象(传入compareTo()的参数对象)返回负整数

  • this对象(调用compareTo方法的对象)等于指定对象(传入compareTo()的参数对象)返回零

代码示例

package com.atguigu.bean;

public class Person implements Comparable{

private int id;

private String name;

private int age;

public Person() {

}

public Person(int id, String name, int age) {

this.id = id;

this.name = name;

this.age = age;

}

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

@Override

public String toString() {

return “Person{” +

“id=” + id +

“, name='” + name + ‘’’ +

“, age=” + age +

‘}’;

}

/*

根据年龄排序

*/

@Override

public int compareTo(Object o) {//多态参数 Object o=new Person()

if (this == o)

总结

其他的内容都可以按照路线图里面整理出来的知识点逐一去熟悉,学习,消化,不建议你去看书学习,最好是多看一些视频,把不懂地方反复看,学习了一节视频内容第二天一定要去复习,并总结成思维导图,形成树状知识网络结构,方便日后复习。

这里还有一份很不错的《Java基础核心总结笔记》,特意跟大家分享出来

目录:

部分内容截图:

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

参数 Object o=new Person()

if (this == o)

总结

其他的内容都可以按照路线图里面整理出来的知识点逐一去熟悉,学习,消化,不建议你去看书学习,最好是多看一些视频,把不懂地方反复看,学习了一节视频内容第二天一定要去复习,并总结成思维导图,形成树状知识网络结构,方便日后复习。

这里还有一份很不错的《Java基础核心总结笔记》,特意跟大家分享出来

目录:

[外链图片转存中…(img-fbO8PL9i-1715685193270)]

部分内容截图:

[外链图片转存中…(img-LXAcG9qJ-1715685193270)]

[外链图片转存中…(img-cwFPn7jN-1715685193271)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

  • 11
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值