《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!
a1.m();
a1.m1();
a1.m2();
b.mb();
c.mc();
d.mb();
d.mc();
d.md();
e.me();
}
}
/*
为什么要定义抽象类
留给子类继承
子类需要继承抽象类,实现里面的抽象方法,这样子类可以创建对象;
*/
interface IA{
public static final int M = 10;
//public static final可以不写,默认有
int M1 = 10;
double N = 2.78;
public abstract void m();
//public abstract也可以省略不写,默认有
void m1();
void m2();
}
abstract class ClassA{
abstract void ma();
}
interface IB{
void mb();
}
interface IC{
void mc();
}
interface ID extends IB,IC{
void md();
}
abstract class ClassE{
public abstract void me();
}
//实现类
//一个类去实现接口,如果这个类不希望也成为抽象类,就必须实现接口中所有方法
//否则这个类也是抽象类
class Impl extends ClassE implements IA,ID{
//public 必须要写,不写的话是默认default
public void m1(){
System.out.println(“1111”);
}
public void m2(){
System.out.println(“22222”);
}
@Override
public void m() {
// TODO Auto-generated method stub
}
@Override
public void me() {
// TODO Auto-generated method stub
}
@Override
public void mb() {
// TODO Auto-generated method stub
}
@Override
public void mc() {
// TODO Auto-generated method stub
}
@Override
public void md() {
// TODO Auto-generated method stub
}
}
作用:
接口的多继承
-
利用接口去实现多继承,不会破坏类之间树状关系的简单性
-
java中,多个子类主要的共性抽象成父类,次要的共性抽象成接口
-
接口中所有方法都是抽象方法
-
Java中的弱耦合,遵循同一标准;
package test;
public class TestInterface2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//创建一个台灯对象
Lamp l = new Lamp();
//创建一个黄灯泡对象
YellowLight light = new YellowLight();
//将黄灯泡传入到台灯的setLight方法中
l.setLight(light);
//然后执行台灯的开灯方法
l.powerOn();
/*
-
思考一个问题:
-
这只能传入一个黄灯泡对象,如果想要再传入其他灯泡呢,这种方式就不行了
-
setLight方法中传入的是YellowLight对象,所以要想再传入其他灯泡就得重新写一个方法
-
这样程序的耦合度就太高了,
*例如:
*/
RedLights redLight = new RedLights();
//将黄灯泡传入到台灯的setLight方法中
//l.setLight(redLight**);//所以这里台灯Lamp没有传入红灯泡 的方法
//然后执行台灯的开灯方法
//l.powerOn();
}
}
class Lamp{
YellowLight light = null;
public void setLight(YellowLight light){
this.light = light;
}
//台灯的开灯方法
public void powerOn(){
light.LightOn();
}
}
class YellowLight {
public void LightOn(){
System.out.println(“黄灯泡发黄光”);
}
}
class RedLights {
public void RedLightOn(){
System.out.println(“红灯泡发红光”);
}
}
-
解耦合的工具, 标准
-
把标准的使用者和标准的实现者分离
package test;
//接口的解耦合作用
public class TestInterface3 {
/**
-
为解决上面提到的程序无法解耦的问题,这就引入了interface 的作用,
-
利用interface可以很好的使程序达到弱耦合的效果,
-
就是在台灯和灯泡之间加一个统一的标准,
-
- 接口中所有方法都是抽象方法
-
Java中的弱耦合,遵循同一标准;
-
解耦合的工具, 标准
-
把标准的使用者和标准的实现者分离
-
@param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//创建台灯对象
Lamps l = new Lamps();
//创建黄灯泡对象
YellowLights light = new YellowLights();
//创建红灯泡对象
RedLight r = new RedLight();
//台灯里面传入什么就调用什么,不用再更改Lamp程序中的代码,达到弱耦合效果
l.setLight(light);
l.setLight®;
//再调用开灯方法
l.powerOn();
}
}
class Lamps{
private Light light = null;
//传入接口对象;
public void setLight(Light light){
this.light = light;
}
//开灯方法
public void powerOn(){
light.On();
}
}
//创建灯泡的接口
interface Light{
public void On();
}
class YellowLights implements Light{
public void On(){
System.out.println(“黄灯泡发黄光”);
}
}
class RedLight implements Light{
public void On(){
System.out.println(“红灯泡发红光!”);
}
}
static final abstract (都不能修饰构造方法)
在方法中:
private
static
final
abstract
final 和abstract 相矛盾,不能同时出现
抽象类中可以有一个final属性;
一个类同时是final和abstract 是不对的
一个方法同时是final和abstract 是不对的
一个final类中有抽象方法也是不对的(final类没有子类)
static 和 abstract 不能同时出现
静态方法的覆盖没有多态
private 和 abstract 不能同时出现;
私有方法不能继承给子类
所以
private static final 可以随意组合,但均不能和abstract联用;
abstract
总结一下:abstract class 和 interface 有什么区别?
含有 abstract 修饰符的 class 即为抽象类,abstract 类不能创建的实例对象。含有 abstract 方法的类必须定义为 abstract class,abstract class 类中的方法不必是抽象的。abstract class 类中定义抽象方法必须在具体(Concrete)子类中实现,所以,不能有抽象构造方法或抽象静态方法。如果的子类没有实现抽象父类中的所有抽象方法,那么子类也必须定义为 abstract 类型。
接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的。接口中的方法定义默认为public abstract 类型,接口中的成员变量类型默认为 public static final。
下面比较一下两者的语法区别:
1.抽象类可以有构造方法,接口中不能有构造方法。
2.抽象类中可以有普通成员变量,接口中没有普通成员变量
Ending
Tip:由于文章篇幅有限制,下面还有20个关于MySQL的问题,我都复盘整理成一份pdf文档了,后面的内容我就把剩下的问题的目录展示给大家看一下
如果觉得有帮助不妨【转发+点赞+关注】支持我,后续会为大家带来更多的技术类文章以及学习类文章!(阿里对MySQL底层实现以及索引实现问的很多)
吃透后这份pdf,你同样可以跟面试官侃侃而谈MySQL。其实像阿里p7岗位的需求也没那么难(但也不简单),扎实的Java基础+无短板知识面+对某几个开源技术有深度学习+阅读过源码+算法刷题,这一套下来p7岗差不多没什么问题,还是希望大家都能拿到高薪offer吧。
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!
抽象类可以有构造方法,接口中不能有构造方法。
2.抽象类中可以有普通成员变量,接口中没有普通成员变量
Ending
Tip:由于文章篇幅有限制,下面还有20个关于MySQL的问题,我都复盘整理成一份pdf文档了,后面的内容我就把剩下的问题的目录展示给大家看一下
如果觉得有帮助不妨【转发+点赞+关注】支持我,后续会为大家带来更多的技术类文章以及学习类文章!(阿里对MySQL底层实现以及索引实现问的很多)
[外链图片转存中…(img-R8jE72zL-1714676497344)]
[外链图片转存中…(img-PNDQ9ii0-1714676497344)]
吃透后这份pdf,你同样可以跟面试官侃侃而谈MySQL。其实像阿里p7岗位的需求也没那么难(但也不简单),扎实的Java基础+无短板知识面+对某几个开源技术有深度学习+阅读过源码+算法刷题,这一套下来p7岗差不多没什么问题,还是希望大家都能拿到高薪offer吧。
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!