抽象类与抽象方法(笔记)

任何一个领域,取得一点点的成绩
都需要不止三五个月的持续努力
其实这是好事
任何能快速掌握的技能,都没有什么竞争力

Java的抽象类(abstract class)

随着继承层次中一个个子类的定义,类也变得越具体,而父类则更一般,更通用,类的设计应该保证父类和子类能够共享特征,有时将父类设计的更加抽象,以至于它没有具体的实例,这样的类叫做抽象类

抽象类特征:
- 抽象类不能实例化对象,必须被继承
- 抽象类的成员变量,成员方法,构造方法的访问方式与普通类是一样的
- 一个类只能继承一个抽象类
- 类方法(用static修饰的方法),构造方法(方法名与类名相同,无返回值)
复制代码
如何定义抽象类

在Java语言中,用abstract class定义一个抽象类

package AbstractDemo1;
/*
 * 创建一个抽象Teachers父类
 * 含有3个成员变量,1个构造方法,
 * 7个成员方法
 */

public abstract class Teachers {
    private String name;
    private String weChat;
    private String course;
    public Teachers(String name,String weChat,String course){
            System.out.println("建立一个Teachers构造方法");
            this.name=name;
            this.weChat=weChat;
            this.course=course;
    }
    public void show() {
        System.out.println("该老师教授的课程为:"+course);
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getWeChat() {
        return weChat;
    }
    public void setWeChat(String weChat) {
        this.weChat = weChat;
    }
    public String getCourse() {
        return course;
    }
    public void setCourse(String course) {
        this.course = course;
    }
}
复制代码

package AbstractDemo1;
//创建一个JavaTeacher类
public class JavaTeacher extends Teachers {
    public JavaTeacher(String name, String weChat, String course) {
        super(name, weChat, course);
        // TODO Auto-generated constructor stub
    }

}
public class AbstractDemo {
    public static void main(String[] args) {
        //发生错误,由于抽象类不能继承对象
        //Teachers t=new Teachers("tom","lyk1234",".net");
        //应采用继承抽象类的方式使用
        JavaTeacher jt=new JavaTeacher("John","lhy4567","Java");
        jt.show();
    }

}
复制代码

输出结果
建立一个Teachers构造方法
该老师教授的课程为:Java

抽象方法

<访问修饰符> abstract <方法名>定义,抽象方法只有方法名,没有方法体,方法名括号后面直接为分号,而不是花括号。

public abstract class Animals{
    private String name;
    private int age;
//声明一个abstract类型的方法eat
pubic  abstract void eat();

}


public  class Cat extends Animals{
   //若Cat类继承了Animals类,那么必须实现eat方法
    public  abstract void eat(){
        System.out.println("我可以吃");
    }
}
复制代码
  • 注意事项
  • 如果一个类包含抽象方法,那么该类必须是抽象类
  • 子类必须重写抽象类的抽象方法,或者声明自身为抽象类

一天又这么过去了,考研还是工作有一点点小迷茫,都已经四月份了

猜你喜欢

转载自juejin.im/post/5caca4c56fb9a0688f374bdf