特点:抽象类实际上是用来放抽象方法的,抽象类里面可以没有抽象方法,但是有抽象方法的一定是抽象类。
关键字: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小时内删除。
留言与评论(共有 0 条评论) |