抽象类与接口
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、一个类只能继承一个抽象类,而一个类却可以实现多个接口。

相关内容

热门资讯

摩通:华尔街银行业绩强劲提振欧... 观点网讯:7月22日,华尔街大型银行第二季度业绩表现强劲,提振了市场对欧洲投资银行即将开启的财报季的...
广州拟推动房地产纾困和发展 引... 观点网讯:7月22日,“十五五”时期,广州拟切实推动房地产纾困和发展,引导房地产市场企业转型升级。 ...
AI投入成“无底洞”?谷歌资本... 隔夜美股三大指数集体收低,道琼斯工业指数下跌0.01%报52218.58点,标普500指数跌0.14...
新太空经济从“起势”迈向“成势... 当前,全球正处于新一轮科技革命和产业变革加速演进的关键节点,人工智能、合成生物学、固态电池、高端算力...
金价四连涨,水贝又挤满人 每经记者:赵景致 每经编辑:何小桃,廖丹 记者|赵景致 编辑|何小桃 廖丹杜恒峰校对|金冥羽 金价在...
专访微亿智造董事长张志琦:在“... 本报(chinatimes.net.cn)记者石飞月 上海报道 在刚刚过去的2026世界人工智能大会...
Alphabet CEO:市场... 美东时间周三(7月22日)盘后,在Alphabet财报电话会上,公司CEO Sundar Picha...
毕马威:香港基金税制改革料吸引... 观点网讯:7月22日,毕马威发布《香港资产管理及私募股权展望》报告,指出香港基金免税制度及附带权益税...
维护资本市场平稳运行,组合拳来... 重要新闻提示 7月20日,证监会召开证券公司及基金机构座谈会,听取各方关于促进资本市场平稳健康发展的...
原创 缩... 其实这个阶段,反攻继不继续,对我来说没啥意义。因为小登估值依旧高高在上,随时可能像上周五,带崩老登。...
易方达张坤,罕见调仓 图/视觉中国 昔日公募圈“一哥”,也不“爱”白酒了。 7月21日,易方达知名基金经理张坤旗下多只产品...
宽基ETF连续2日净流出 7月23日,本周二、周三,宽基ETF连续2日资金流出。 数据显示,7月22日,ETF市场净流出216...
367 款新品换不来年轻人一句... 作者|极点商业 张先森 2026年初夏,#康师傅冰红茶卖不动了#登上热搜。 网友对此的反应颇为两极...
1元净资产市场只给5毛8!银行... 继中信银行、招商银行之后,光大银行也于7月20日在投资者互动平台透露,该行已成立市值管理小组,全面统...
风险等级为何需要运作机制更关键... 在基金投资领域,风险等级是投资者评估基金产品的重要参考指标之一。然而,很多投资者往往只关注风险等级的...
刚刚!万亿“光模块一哥”正式招... (来源:上市之家) 7月22日,中际旭创股份有限公司(300308.SZ)正式刊发H股招股章程,启动...
智象未来完成15亿元C轮融资,... 智象未来(合肥)信息技术有限公司(以下简称“智象未来”)是一家全球多模态生成式人工智能创新企业,也是...
半年赚170%、规模565亿,... 来源:市场资讯 来源:资管网 半年赚170%,管理规模从89亿干到565亿。 然后他减仓了。 财通基...
Token账单背后的资本博弈 最近大家可能有一个困惑:为什么大模型概念股,看似业务高速增长、调用量节节攀升,但估值在经历了高速攀升...
Costco签约入驻 京东成为... 观点网讯:7月22日,全球知名会员制仓储零售商Costco(开市客)与京东达成合作,京东成为Cost...