Java 抽象类
1. 认识抽象类
(1) 在Java中有个关键字叫:abstract,他是抽象的意思,可以用它修饰类、成员方法
(2) abstract修饰类,这个类就是抽象类;修饰方法,这个方法就是抽象方法(//抽象方法:必须使用abstract修饰,不能有方法体)
修饰符 abstract class 类名{
修饰符 abstract 返回值类型 方法名(形参列表);
}
//抽象类
public abstract class A {
//抽象方法:必须使用abstract修饰,不能有方法体
public abstract void show();
}
(3) 注意事项:
① 抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类。
② 类该有的成员(成员变量、方法、构造器)抽象类都可以有
③ 抽象类最主要的特点:抽象类不能创建对象,仅作为一种特殊的父类、让子类继承实现。
④ 一个类继承抽象类,必须重写完抽象类的全部抽象方法,否则这个类也必须定义成抽象类。
//抽象类
public abstract class A {
//成员变量
private String name;
//抽象方法:必须使用abstract修饰,不能有方法体
public abstract void show();
//构造器
public A() {
}
public A(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class B extends A{
//一个类继承抽象类,必须重写完抽象类的全部抽象方法,否则这个类也必须定义成抽象类
@Override
public void show() {
}
}
public static void main(String[] args) {
//抽象类不能创建对象
//A a = new A();
}
2. 使用抽象类的好处
(1) 父类知道每个子类都要做出某个行为,但每个子类都要做的情况不一样,父类就定义成抽象方法,交给子类去重写实现,我们设计这样的抽象类,就是为了更好的支持多态
//定义一个动物的抽象类 由于每个动物的叫法不同将叫设置成抽象方法 以便每个动物对象去实现
public abstract class Animal {
private String name;
public abstract void jiao();
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
//动物猫
public class Cat extends Animal {
@Override
public void jiao() {
System.out.println("小猫喵喵");
}
}
//动物狗
public class Dog extends Animal{
@Override
public void jiao() {
System.out.println("小狗往往");
}
}
public static void main(String[] args) {
Animal a = new Cat();
a.setName("多比");
a.jiao();//小猫喵喵
Animal b = new Dog();
b.setName("大锤");
b.jiao();//小狗往往
}
3. 常见的应用场景
模板方法设计模式:解决方法中存在重复代码的问题
模板方法--使用final修饰:模版防止被子类重写
public abstract class Animal {
//模版方法 动物描述 --使用final修饰:模版防止被子类重写
public final void descr(){
System.out.println("我最喜爱的动物");
System.out.println(write());
System.out.println("这就是我最喜爱的动物,纽币不");
}
//抽象方法 每个动物不一样
public abstract String write();
}
//动物狗
public class Dog extends Animal {
@Override
public String write() {
return "狗,是食肉目犬科犬属哺乳动物,别称犬,与马、牛、羊、猪和鸡并称“六畜”。狗的体型大小、毛色因品种不同而不同,体格匀称";
}
}
//动物猫
public class Cat extends Animal {
@Override
public String write() {
return "猫(拉丁学名:Felis silvestris catus),是食肉目猫科猫属的脊索动物。猫体型小,体色由蓝灰色到棕黄色,体型瘦削,身长0.3-0.5米,别称“虎舅”";
}
}
public static void main(String[] args) {
//抽象类的常用场景之一:经常用来设计模版方法设计模式
Cat cat = new Cat();
cat.descr();//我最喜爱的动物
//猫(拉丁学名:Felis silvestris catus),是食肉目猫科猫属的脊索动物。猫体型小,体色由蓝灰色到棕黄色,体型瘦削,身长0.3-0.5米,别称“虎舅”
//这就是我最喜爱的动物,纽币不
Dog dog = new Dog();
dog.descr();//我最喜爱的动物
//狗,是食肉目犬科犬属哺乳动物,别称犬,与马、牛、羊、猪和鸡并称“六畜”。狗的体型大小、毛色因品种不同而不同,体格匀称
//这就是我最喜爱的动物,纽币不
}
原文地址:https://blog.csdn.net/zeijiershuai/article/details/144437230
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!