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

相关内容

热门资讯

亚朵节后价格“跳水”超70% 春节过后,部分热门小城的亚朵酒店房价上演“过山车”行情,房价节前飙升,节后迅速跳水,巨大的价格波动引...
原创 金... 你绝对想不到,同样一克999足金,在深圳水贝批发市场只要1334元,走进周大福门店却变成1545元,...
德兰明海冲击港交所!递表前大手... 又一家储能企业“叩响”了港交所大门。近期,港交所官网显示,中小型用户侧储能企业深圳市德兰明海新能源股...
绿茶集团、猫眼娱乐发布正面盈利... |2026年2月25日 星期三| NO.1绿茶集团发布正面盈利预告 2月24日港股收市后,绿茶集团(...
安宁市的历史文化及名人有哪些 安宁市,这座坐落在彩云之南的城市,宛如一颗璀璨明珠,散发着迷人的历史文化魅力。在这里,岁月留下了深深...
中国央行连续12个月加量续作M... 来源:中国新闻网 中新社北京2月24日电 (陶思阅)中国央行24日发布中期借贷便利(MLF)招标公告...
不是15%?特朗普10%全球关... 据美国海关及边境保卫局(CBP)发布消息,特朗普政府将实施的新全球关税为10%。 第一财经收到的CB...
2026年春节出游人次、消费金... 2026年春节,为期9天的超长假期点燃了全国消费热情,多项核心数据创下历史纪录。 经文化和旅游部数据...
美国联邦存款保险公司(FDIC... 美国联邦存款保险公司(FDIC):美国银行业存款季环比下滑2%。
2026春节AI大战深度复盘:... 主编温静导读:2026年春节,元宝、千问、豆包三大巨头以红包、免单为杠杆,发动了一场规模空前的用户争...
期市节后首日金属板块普涨 白银... 本报记者 王宁 2月24日,春节后的首个交易日,国内期货市场呈现涨多跌少态势。 从板块表现来看,农产...
月跌超10%背后:软件行业,将... 此前一天,2月23日,人工智能公司Anthropic宣布,其Claude Code工具可用于在IBM...
公告精选 |《飞驰人生3》票房... 控制权收购 东阳光(600673.SH):公司正在筹划通过发行股份的方式收购宜昌东数一号投资有限责任...
东阳光:筹划收购东数一号控制权... 上证报中国证券网讯(记者 骆民)东阳光公告,公司正在筹划通过发行股份的方式收购宜昌东数一号投资有限责...
原创 高... 你有没有发现,几年前人人都在拼命买房,而现在,越来越多人开始思考,房子,到底还是不是财富? 这几年,...
这个春节,中国经济热力值拉满 2026年的春节,注定要在中国消费市场上留下浓墨重彩的一笔。 当9天的超长假期遇上持续加码的政策红利...
2026年中国汽车产业十大趋势... 2025年,中国汽车产业在连续17年产销量稳居全球第一的基础上,再次交出了一份充满变革与挑战的答卷。...
2022年天猫烘焙厨电行业趋势... 今天分享的是:2022年天猫烘焙厨电行业趋势白皮书 报告共计:7页 烘焙厨电迎来新变革:从“功能单一...