数据蛙数据分析每周作业

Java学习笔记——抽象类

2019-05-02  本文已影响2人  cynthia猫

抽象类

可以理解为看不懂的类

特点:

  1. 抽象类和抽象方法必须用abstract关键字修饰
  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);
    }
}
上一篇下一篇

猜你喜欢

热点阅读