栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java中的抽象类+接口

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java中的抽象类+接口

一、抽象类

      将一些名称一致但是细节不同的行为提取到父类中定义为抽象方法。抽象方法所在的类必须是抽象类。用abstract修饰。抽象方法没有方法体

      当一个具体类继承了抽象类之后,必须实现这个抽象类中的抽象方法。抽象类不能直接创建对象。

      抽象类中有构造函数(任何类都有构造方法),只是不常用它来创建对象。抽象类中的构造方法是用来让子类继承的,也就是说,在生成子类对象的时候,必须先生成父类对象才能创建,这个时候就用到了父类的构造方法。

问题1、抽象类中一定有抽象方法吗?

不一定。
有抽象方法的类一定是抽象类,但是抽象类中不一定必须有抽象方法。

问题2、抽象类中可以有静态方法吗?

可以
静态方法不是抽象方法,不需要子类重写。两者并不会起冲突。

问题3、抽象类中可以定义属性吗?

可以

问题4、抽象方法可以重载吗?

可以
重载只与方法名和参数列表有关,与标识符是没有关系的

问题5、抽象方法可以和实体方法重载吗?

可以

问题6、抽象方法可以是静态的吗?

不可以
抽象方法在被子类继承之后必须重写,但是子类是不可以重写父类的静态方法的。

问题7、抽象方法和抽象类可以用final来修饰吗?

不可以
抽象方法需要被继承重写,但是final修饰的方法是不可以被重写的,两者是有冲突的,所以不可以

问题8、抽象方法可以是默认的吗?

可以

问题9、抽象方法可以是私有的吗?

不可以
子类不能继承父类私有的方法,也就不能重写。但是抽象方法又要求必须重写,两者产生了冲突。

抽象类可以继承普通类
子类在继承父类的时候,什么东西无法继承?
构造方法、所有私有的东西、代码块(构造代码块和静态代码块)无法继承。(局部代码块是在方法中的,只要方法继承过去了,局部代码块也就被继承过去了)
其它的内容看修饰符是否允许。

package a;
public abstract class A{
abstract void m();
}
package b;
import a.A;
public class B extends A {---报错,抽象类的抽象方法是默认修饰符。而默认的对其他包是不可见的。子类重写会报错。
void m(){}
}
二、接口

interface
接口不是类—接口中的方法全部是抽象方法。

由于接口中的方法都是抽象方法(JDK1.8以前,1.0~1.7,在1.8以后,接口中可以定义实体方法),默认使用public atstract修饰,那么就意味着是个抽象类,是不能创建对象

接口中定义的属性默认是用public static final。

问题1、接口中可以定义静态方法吗?

不可以
静态方法不可以被重写。但是子类又必须重写接口的所有方法,二者会有冲突。

问题2、接口中可以定义属性吗?

可以
但是默认用public static final 来修饰(修饰符没有优先级,顺序是不会影响后面的变量的)

接口中的抽象方法默认是用public来修饰,且只能用public修饰。

// 小坑
interface A{
void m();     
//虽然没有写修饰符,但是默认已经把public abstract加上去了
}

class B implements A{
void m(){}
//这一行报错。因为接口中的方法默认是public,重写的权限不可以小于父类。B类的重写权限是默认的,小于public。
}

      Java中支持的是单继承,多实现
      一个类只能继承一个类,但是可以去实现多个接口—不可避免的可能会产生安全问题

一个类中不能存在两个方法签名完全一致的方法,否则会出现调用混乱的情况。

问题3、抽象类实现了接口,也必须实现接口中的方法吗?

可以不用

问题4、接口可以继承接口吗?

可以

问题5、一个接口可以继承多个接口吗?

因为接口中的方法都是抽象方法,没有方法体
Java中的单继承是指类之间的单继承

具体类实现接口的里的方法,修饰符必须是public
作用

制定了一份标准,结合多态,以及反射可以实现解耦

instanceof在判断的时候看的是具体的实现类而不是看声明类(也就是new的什么类型的就是什么类型的)。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/644891.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号