Java学习笔记——抽象类

作者: cynthia猫 | 来源:发表于2019-05-02 15:29 被阅读2次

抽象类

可以理解为看不懂的类

特点:

  1. 抽象类和抽象方法必须用abstract关键字修饰
  • abstract class 类名{}
  • public abstract void eat();
  1. 抽象类不一定有抽象方法,有抽象方法的类一定是个抽象类或者是接口
  2. 抽象类不能实例化,那么如何进行抽象类实例化?
  • 由具体的子类实例化。这也是多态的一种,抽象类多态。
  1. 抽象类的子类
  • 要么是抽象类
  • 要么重写抽象类中的所有抽象方法

示例:

package lesson05;

public class Demo05 {
    public static void main(String[] args) {
        Cat c = new Cat();
        c.eat();
        c.sleep();

        //这种写法,就是多态
        Animal c2 = new Cat();
        c2.eat();
        c2.sleep();

        Tanglaoya t = new Tanglaoya();
        t.eat();
        t.sleep();
    }
}

abstract class Animal{
    abstract void eat();
    abstract void sleep();
}

class Cat extends Animal{
    @Override
    void eat() {
        System.out.println("cat eat!");
    }
    @Override
    void sleep(){
        System.out.println("cat sleep!");
    }
}

abstract class Duck extends Animal{}

class Tanglaoya extends Duck{
@Override
    void eat() {
            System.out.println("tanglaoya eat!");
            }
@Override
    void sleep(){
            System.out.println("tanglaoya sleep!");
            }

        }

抽象类多态

上面示例中的这段代码:

//这种写法,就是多态
        Animal c2 = new Cat();
        c2.eat();
        c2.sleep();

这种写法有很多种叫法,比如:

  1. 父类指向子类对象
  2. 抽象类指向子类对象
  3. 抽象类指向实现类对象

抽象类成员

特点:

  1. 成员变量:可以是变量,也可以是常量
  2. abstract不能修饰成员变量,只能修饰类和方法
  3. 构造方法:抽象类也是有构造方法的,用于子类访问父类数据的初始化
  4. 成员方法:抽象类的方法可以是抽象的,也可以是非抽象
  5. 抽象类的成员方法特性:
  • 抽象方法:强制要求子类实现
  • 非抽象方法:子类继承实现自己的业务,提高代码的复用性
    示例代码:
package lesson06;

public class Demo06 {

    public static void main(String[] args) {
        Cat c = new Cat("miao");
        System.out.println(c.name);
    }
}

abstract class Animal{
    String name;
    public Animal(){}
    public Animal(String name){
        super();
        this.name = name;
    }
}


class Cat extends Animal {
    public Cat(String name){
        super(name);
    }
}

相关文章

网友评论

    本文标题:Java学习笔记——抽象类

    本文链接:https://www.haomeiwen.com/subject/yepnnqtx.html