当前位置: 首页 > news >正文

淄博网站建设卓迅网站后台

淄博网站建设卓迅,网站后台,互联网网站建设水平,国内建网站公司抽象类什么是抽象类#xff1f;抽象类是特殊的类#xff0c;只是不能被实例化#xff1b;除此以外#xff0c;具有类的其他特性#xff1b;重要的是抽象类可以包括抽象方法#xff0c;这是普通类所不能的。抽象方法只能声明于抽象类中#xff0c;且不包含任何实现#…抽象类什么是抽象类 抽象类是特殊的类只是不能被实例化除此以外具有类的其他特性重要的是抽象类可以包括抽象方法这是普通类所不能的。抽象方法只能声明于抽象类中且不包含任何实现派生类必须覆盖它们。另外抽象类可以派生自一个抽象类可以覆盖基类的抽象方法也可以不覆盖如果不覆盖则其派生类必须覆盖它们。如何定义抽象类抽象类和抽象方法需要被 abstract 关键字修饰抽象类中的方法一般要求都是抽象方法抽象方法没有方法体举个例子/*** author gf* date 2023/2/23*/ // 1.抽象类和抽象方法需要被 abstract 关键字修饰 abstract class Car {// 2.抽象类中的方法一般要求都是抽象方法抽象方法没有方法体abstract void makeCar();}抽象类存在的意义众所周知抽象类不能被实例化那么抽象类存在的意义是什么呢抽象类存在的一个最大意义就是被继承当被继承后就可以利用抽象类实现多态。先看一段代码/*** author gf* date 2023/2/23*/// 抽象类和抽象方法需要被 abstract 关键字修饰 abstract class Car {// 抽象类中的方法一般要求都是抽象方法抽象方法没有方法体abstract void makeCar(); }class BWM extends Car{// 重写抽象类中的draw方法Overridevoid makeCar() {System.out.println(制造宝马);} } public class CatTest {public static void main(String[] args) {// 抽象类虽然不能直接实例化,但可以把一个普通类对象传给一个抽象类的引用即父类引用指向子类对象Car bwm new BWM();// 通过父类引用调用被子类重写的方法bwm.makeCar();} }运行结果疑问1父类引用指向子类对象后发生了什么关于方法父类引用可以 调用子类和父类公用的方法(如果子类重写了父类的方法则调用子类方法)但子类特有的方法无法调用。关于属性: 父类引用可以调用父类的属性不可以调用子类的属性疑问2这样做的好处是什么减少一些重复性的代码对象实例化的时候可以根据不同需求实例化不同的对象抽象类实现多态再看一段代码// 抽象类和抽象方法需要被 abstract 关键字修饰 abstract class Car {// 抽象类中的方法一般要求都是抽象方法抽象方法没有方法体abstract void makeCar(); }class BWM extends Car{// 重写抽象类中的draw方法Overridevoid makeCar() {System.out.println(宝马即使你把我拆得七零八落我依然是位美人);} } class Tesla extends Car{// 重写抽象类中的draw方法Overridevoid makeCar() {System.out.println(特斯拉我要做电车界的老大);} }class BYD extends Car{// 重写抽象类中的draw方法Overridevoid makeCar() {System.out.println(比亚迪干掉特斯拉我们就是电车界的老大);} } public class CatTest {public static void main(String[] args) {// 抽象类虽然不能直接实例化,但可以把一个普通类对象传给一个抽象类的引用即父类引用指向子类对象Car bwm new BWM();Car tesla new Tesla();Car byd new BYD();// 通过父类引用调用被子类重写的方法bwm.makeCar();tesla.makeCar();byd.makeCar();} }运行结果多态的好处这里就不赘叙了疑问抽象类实现多态和普通类实现多态有什么区别抽象类的子类必须重写父类的所有方法而普通类则不用抽象类的特点信到这里对抽象类也有了一个大概的认识下面我们来简单做一下总结使用abstract修饰的类或方法就抽象类或者抽象方法抽象类是不能具体的描述一个对象不能用抽象类直接实例化对象抽象类里面的成员变量和成员方法都是和普通类一样的只不过就是不能进行实例化了当一个普通类继承这个抽象类后那么这个普通类必须重写抽象类当中的所有的抽象方法我们之前说过抽象类是不具体的没有包含足够的信息来描述一个对象所以我们需要把他补充完整但当一个抽象类A继承了抽象类B这是抽象类A就可以不重写抽象类B当中的抽象方法final不能修饰抽象类和抽象方法因为抽象类存在的最大意义就是被继承而被final修饰的不能被继承final和抽象他们两个是天敌抽象方法不能被private修饰抽象方法一般都是要被重写的你被private修饰了还怎么重写抽象类当中不一定有抽象方法但如果一个类中有抽象方法那么这个类一定是抽象类。接口如何定义接口接口的定义格式与定义类的格式基本相同将class关键字换成 interface 关键字就定义了一个接口口当中的成员变量默认都是public static final接口当中的成员方法默认都是public abstract例子 public interface 接口名称{ // 定义变量,接口当中的成员变量默认都是public static final int a 10; // 抽象方法 public abstract void method1(); // public abstract 是固定搭配可以不写 void method2(); // 接口当中的成员方法默认都是public abstract, 更推荐用第二种来定义方法 }疑问那么接口一般用在什么地方呢一般情况下实现类和它的抽象类之前具有 is-a 的关系但是如果我们想达到同样的目的但是又不存在这种关系时使用接口。由于 Java 中单继承的特性导致一个类只能继承一个类但是可以实现一个或多个接口此时可以使用接口。 通过接口实现多态代码如下 /*** author gf* date 2023/2/23*/interface Car {void makeCar(); }class BWM implements Car{Overridepublic void makeCar() {System.out.println(宝马即使你把我拆得七零八落我依然是位美人);} } class Tesla implements Car{Overridepublic void makeCar() {System.out.println(特斯拉我要做电车界的老大);} }class BYD implements Car{Overridepublic void makeCar() {System.out.println(比亚迪干掉特斯拉我们就是电车界的老大);} } public class CatTest {public static void main(String[] args) {Car bwm new BWM();Car tesla new Tesla();Car byd new BYD();bwm.makeCar();tesla.makeCar();byd.makeCar();} }运行结果 帮java实现多继承由于 Java 中单继承的特性导致一个类只能继承一个类但是可以实现一个或多个接口此时可以使用接口。代码例子class Animal {String name;// 父类的自定义的构造方法public Animal(String name) {this.name name;} } // 自定义多种接口 interface IFlying {void fly(); } interface IRunning {void run(); } interface ISwimming {void swimming(); } // 小鸭子不仅会跑还会游泳、飞行 //一个类继承父类并实现多个接口间接的解决java中不能多继承的问题 class Duck extends Animal implements IRunning, ISwimming, IFlying {// 子类构造方法public Duck(String name) {super(name);// 在给实现子类的构造方法前先要用super()调用实现父类的构造方法比较先有父后有子呀// 因为父类自己定义了构造方法编译器不会自动给给子类构造方法中添加super();来实现父类的构造方法需要我们自己实现}// 对接口中的抽象方法进行重写Overridepublic void fly() {System.out.println(this.name 正在用翅膀飞);}Overridepublic void run() {System.out.println(this.name 正在用两条腿跑);}Overridepublic void swimming() {System.out.println(this.name 正在漂在水上);}}public class CatTest {public static void main(String[] args) {Duck duck new Duck(小黄鸭); // 实例化鸭子对象duck.fly(); // 通过引用 变量名.方法名 输出重写后的方法duck.run();duck.swimming();} }疑问 有人可能会说干嘛用接口我直接在父类Animal中实现fly、run、swimming这些属性然后不同的动物子类再继承父类这些方法不行吗但问题是鸭子会fly、swimming那猫会飞和游泳吗你再写个其他动物的子类是不是就不行了而用接口呢我们只是把这种飞、游泳的行为给抽象出来了只要一个子类有这种行为他就可以实现相对应的接口接口是更加灵活的。抽象类与接口的区别通过以上对抽象类和接口的描述我们总结一下抽象类和接口的区别抽象类要被子类继承接口要被类实现接口只能做方法声明抽象类中可以作方法声明也可以做方法实现接口里定义的变量只能是公共的静态的常量抽象类中的变量是普通变量接口是设计的结果抽象类是重构的结果抽象类和接口都是用来抽象具体对象的但是接口的抽象级别最高抽象类可以有具体的方法和属性接口只能有抽象方法和不可变常量抽象类主要用来抽象类别接口主要用来抽象功能
http://www.hkea.cn/news/14477025/

相关文章:

  • 网站网站建设快递网站怎么做的
  • 做食品网站需要什么资质吗郴州市宜章网站建设
  • 教学直播平台网站建设费用吉林建设厅官方网站
  • 免费网站建设排名wordpress已发布不显示
  • 怎样建自己的网站免费的免费的网站制作平台
  • 公司如何办网站wordpress 功能模块
  • 深圳市建设局官方网站郴州吧
  • 南昌简单做网站源码分享
  • 南宁模板开发建站国企网站开发
  • 网站底部优化文字淘宝开店流程步骤图片
  • 帮客户做网站的公司南宁百度网站推广
  • 怎样申请网站无锡手机网站建设公司
  • 营销型网站的建设要织梦做公司网站要钱吗
  • 响应式网站代码规范wordpress 云备份
  • 网站建设 网站开发 区别网页设计师培训班招生
  • 深圳微信网站开发百度获客
  • 企业网站部署计划做网站美工工资多少
  • jsp酒店预订网站开发网站建设的技术标准
  • 优秀的国外设计网站合肥网站建设网新
  • 设计网站排行榜前十名上海企业宣传片制作哪家好
  • 成都企业网站建设公司电话装修公司网站模板下载
  • 站长工具之家网站建设经费的请示
  • 中交建设 招标有限公司网站石大远程网页设计与网站建设答案
  • asp.net mvc网站开发俄罗斯搜索引擎
  • 广州网站建设服务公司他达那非片能延时多久
  • 石家庄企业自助建站系统ui毕业设计代做网站
  • 简单php企业网站源码网站备案查询工信网
  • 建设一个微商的网站公司名字设计
  • 男女做受网站服装公司简介
  • wordpress 改相对路径北京网站关键词优化公