抽象类相关

阅读: 评论:0

抽象类相关

抽象类相关

特点:抽象类实际上是用来放抽象方法的,抽象类里面可以没有抽象方法,但是有抽象方法的一定是抽象类。

关键字:abstract

当有多个类都有相似的功能,但是具体的实现又不一样的时候使用抽象类抽取这个相似的功能

比如说猫和狗都有吃这个行为,但是猫和狗具体吃什么又都不确定

抽象方法的定义格式(没有方法体)

//方法需要用abstract关键字修饰,方法没有方法体
public abstract 返回值类型 方法名(参数列表);

抽象类的定义格式

//使用abstract关键字修饰类
public abstract class 类名{}

定义猫类(Cat)和狗类(Dog)

  • 猫类成员方法:eat(猫吃鱼)drink(喝水…)

  • 狗类成员方法:eat(狗吃肉)drink(喝水…)

实现步骤:

  • 猫类和狗类中存在共性内容,应向上抽取出一个动物类(Animal)

  • 父类Animal中,无法将 eat 方法具体实现描述清楚,所以定义为抽象方法

  • 抽象方法需要存活在抽象类中,将Animal定义为抽象类

  • 让 Cat 和 Dog 分别继承 Animal,重写eat方法

  • 测试类中创建 Cat 和 Dog 对象,调用方法测试

代码实现:

public abstract class Animal {public abstract void eat();public void drink() {System.out.println("喝水");}
}public class Dog extends Animal{@Overridepublic void eat() {System.out.println("狗吃屎");}
}public class Cat extends Animal{@Overridepublic void eat() {System.out.println("猫吃鱼");}
}public class TestAnimal {public static void main(String[] args) {Dog dog = new Dog();dog.eat();dog.drink();System.out.println("-------------");Cat cat = new Cat();cat.eat();cat.drink();}
}

抽象类的注意事项:

抽象类不可以实例化,因为有抽象方法的存在,没有方法体,没有办法执行功能

abstract和static不能同时修饰方法,因为abstract修饰的抽象方法要求重写,而static修饰的静态方法不能被重写

abstract和final不能同时修饰方法,理由同上。       

模板设计模式:

  • 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。 使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。

  • 模板设计模式:把抽象类整体就可以看做成一个模板,模板中不能决定的东西定义成抽象方法 让使用模板的类(继承抽象类的类)去重写抽象方法实现需求

  • 模板设计模式的优势:

    模板已经定义了通用结构,使用者只需要关心自己需要实现的功能即可

/*作文模板类*/
public abstract class CompositionTemplate {public final void write(){System.out.println("<<我的爸爸>>");//1.是希望调用子类的特有方法,但是子类如何记得写这个特有方法呢?//2.就给抽象类定义一个抽象方法,这样子类就必须重写body();System.out.println("啊~ 这就是我的爸爸");}public abstract void body();
}
//3.子类继承父类
public class Tom extends CompositionTemplate {//4.必须重写抽象方法,实现自己特异性的功能@Overridepublic void body() {System.out.println("那是一个秋天, 风儿那么缠绵,记忆中, " +"那天爸爸骑车接我放学回家,我的脚卡在了自行车链当中, 爸爸蹬不动,他就站起来蹬...");}
}
//Test测试类
public class Test {public static void main(String[] args) {Tom t = new Tom();//5. write方法是从父类继承过来直接使用的//6. 在write方法内部,调用的body方法是属于子类自己的t.write();}
}

本文发布于:2024-01-28 21:04:44,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170644709010271.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:03
下一篇:Java基础6.2
标签:抽象类
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23