抽象类与接口
admin
2024-04-03 06:57:58
0

目录

一、抽象类

二、接口

三、抽象类和接口的区别


一、抽象类

        Java 可以创建一种类专门用来作为父类,这种类称为为 “抽象类”。抽象类作为模板作用,其目的是要设计者依据它的格式来修改并创建新的类。

        抽象类定义规则如下:

        1、抽象类和抽象方法都必须用 abstract 关键字来修饰。

        2、抽象类不能直接被实例化,也就是说不能直接 new 关键字去产生对象。

        3、抽象方法只需声明,而不需实现。

        4、含有抽象方法的类必须被声明为抽象,抽象的子类必须覆写所有的抽象方法后才能被实例化,否则这个子类还是个抽象类。

语法

abstract class 类名称{声明数据成员;访问权限 返回值的数据类型  方法名称(参数类型 参数名....){//定义一般方法}//定义抽象方法,抽象方法没有方法体abstract 返回值的数据类型  方法名称(参数类型 参数名....);}

示例

// 定义一个抽象类
abstract class Person {String name;private int age;String occupation;public Person(String name, int age, String occupation) {this.name = name;this.age = age;this.occupation = occupation;System.out.println("Person 姓名: " + this.name + "  年龄: " + this.age + "  职业: " + this.occupation);}// 定义抽象方法talk();abstract void talk();
}class Student extends Person {public Student(String name, int age, String occupation) {super(name, age, occupation);}@Overridevoid talk() {System.out.println("Student 姓名: " + this.name + "  职业: " + this.occupation);}
}class Teacher extends Person {public Teacher(String name, int age, String occupation) {super(name, age, occupation);}@Overridevoid talk() {System.out.println("Teacher 姓名: " + this.name + "  职业: " + this.occupation);}
}public class Main {public static void main(String[] args) {Student s = new Student("张三", 12, "学生");Teacher t = new Teacher("李四", 28, "老师");s.talk();t.talk();}
}

控制台输出

Person 姓名: 张三  年龄: 12  职业: 学生
Person 姓名: 李四  年龄: 28  职业: 老师
Student 姓名: 张三  职业: 学生
Teacher 姓名: 李四  职业: 老师

        从示例中可以看出,抽象类也可以和普通类一样,有构造方法,一般方法和属性,更重要的是还可以有抽象方法,留给子类去实现,而且在抽象类中声明的构造方法后,在子类中必须明确调用。

二、接口

        接口(interface)是 Java 所提供另外一种重要的技术,它的结构和抽象类非常相似,也具有成员与抽象方法,接口有如下一些特征:

        1、接口不能实例化对象。

        2、接口没有构造方法。

        3、接口里的数据成员必须初始化,并且成员均为常量。

        4、接口里的方法必须都是抽象方法 ,接口不能像抽象类一样保有一般方法。JDK1. 8 之后 接口中可以使用 default 关键字修饰的非抽象方法。

        5、接口不是被继承,而是要被实现。

        6、接口支持多继承

        7、接口中的方法被隐式的指定 public abstract(只能是 public abstract,其他修饰符都会报错)

        8、接口的变量被隐式的指定 public static final 变量(并且只能是 public,用 private 修饰会报编译错误)

        9、接口中的方法是不能在接口中实现的,只能由实现接口的类来实现接口中的方法。

示例

interface Person {public static final String name = "人";// 定义抽象方法talk();public abstract void talk();
}interface Computer {String mouse = "鼠标";// 定义抽象方法talk();void surf();
}class Student implements Person, Computer {@Overridepublic void talk() {System.out.println(mouse);}@Overridepublic void surf() {System.out.println(mouse);}}

三、抽象类和接口的区别

        1、抽象类中方法可以有方法体。

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

        3、接口不能有静态代码块和静态方法(用 static 修饰的方法),而抽象类是可以有静态代码块和静态方法。

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

相关内容

热门资讯

原创 今... 今日为5月23日,国际现货黄金价格在4500美元/盎司整数关口附近徘徊不前,日内最低触及4480美元...
三连亏后变为“无主”状态,农尚... 从吴亮手中接盘农尚环境(300536)不足三年后,林峰如今让出了公司控制权,上市公司进入“无主”状态...
55岁湖南女首富出手!豪掷13... 快科技5月24日消息,与马斯克、库克并肩而坐,刚参加完国宴的湖南女首富周群飞就买了家上市企业。 近日...
外资加仓A股,岂是跟风这么简单... 熬过忙碌的交易日,在周末安静时段,理清接下来布局方向。本篇为大家准备了5条要闻,涵盖市场动态、行业变...
原创 俄... 在全球能源的残酷牌桌上,手里攥着石油,腰杆子才能硬气。长期以来,中东的沙漠、俄罗斯的冰原、美国的页岩...
喜力啤酒有产品将涨价,华润啤酒... 来源:红星新闻 红星资本局5月22日消息,今日,红星资本局从雪花啤酒(厦门)有限公司、华润啤酒方面获...
原创 金... 心理预期调整刻不容缓,五月二十二日,黄金价格或将重现十五年前的历史性低迷。 近期若您密切关注着黄金市...
原创 马... 埃隆·马斯克如果能让SpaceX实现“科幻小说”级别的目标,他可能获得1万亿美元的收入。 埃隆·马斯...
涨涨涨!放开限制、可加杠杆!这... 韩国股市站在风口上! 据最新消息,为吸引更多海外资金进入股市,韩国政府计划放开限制,允许境外投资者直...
下周9家上会丨科创板首单IPO... IPO及再融资上会预告 据交易所官网审核动态信息,下周(5.25-5.29)IPO上会审核6家企业,...
富途、老虎市值蒸发1/4!或被... 来源:金融时报 5月22日,中国证监会宣布依法对Tiger Brokers (NZ) Limited...
马爸爸的好兄弟钱多多搞了杀猪盘... *此图由AI生成 作者| 史大郎&猫哥 来源| 是史大郎&大猫财经Pro 上周四,港股经纬天地大崩盘...
原创 壳... 编辑:XL 国际能源圈最近炸开了锅,壳牌这家百年石油巨头在2026年3月与委内瑞拉政府正式签署多项油...
存储热潮愈演愈烈!奖金拿到手软... 财联社5月24日讯(编辑 卞纯)在席卷全球的存储芯片热潮中,韩国“存储芯片双雄”SK海力士和三星无疑...
揽牌、合作、生态,跨境支付头部... 近日,国内头部跨境支付机构密集落地海外重要布局,一方面,连连数字、PingPong两家公司相继在中东...
原创 帮... 老铁们,周末好!我是帮主郑重。刚扫了一眼下周的财经日历,好家伙,事件一个接一个,堪称“消息面轰炸周”...
海南省住建厅与中国石化海南石油... 5月22日,中国石化海南石油分公司代表、党委书记李新强、总经理蔡文东一行赴海南省住建厅拜访交流。省住...
原创 金... 2026年5月22日,国际黄金价格报4536.7美元/盎司,较前期高点5597美元回落约1100美元...
“双标”换卡背后,银行还需多些... 新华社记者 颜之宏、杨深深 持到期银行卡和身份证去银行网点换新卡,却被要求“必须交回旧卡才能取新卡”...
“离境退税2.0”带动“中国购... 【环球时报综合报道】编者的话:5月18日,商务部等6部门联合发布《关于加力优化离境退税措施扩大入境消...