Java抽象类的特点及其应用

在Java中, 一个没有方法体的方法应该定义为抽象方法, 而类中如果有抽象方法, 该类必须定义为抽象类.

抽象类的特点:

  • 抽象类和抽象方法必须使用abstract关键字来修饰。
public abstract class 类名{
}
public abstract void method();
  • 抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类。
//抽象类
public abstract class Animal {
    //抽象类中的抽象方法
    public abstract void eat();

    //抽象类里面可以有非抽象方法
    public void sleep(){
        System.out.println("动物要睡觉........");
    }
}

  • 抽象类不能被实例化
    — 抽象类如何被实例化呢?参考多态的方式,通过子类对象实例化,也叫抽象类多态。
//抽象类   父类
public abstract class Animal {
    //抽象类中的抽象方法
    public abstract void eat();

    //抽象类里面可以有非抽象方法
    public void sleep(){
        System.out.println("动物要睡觉........");
    }
}

//子类
public class Dog extends Animal{
    //重写父类中所有抽象方法
    @Override
    public void eat() {
        System.out.println("狗咬吃骨头...........");
    }
}

//测试类
public class TestDog {
    public static void main(String[] args) {
        //多态  子类对象实例化
        Animal a = new Dog();
        a.eat();   //狗咬吃骨头...........
        a.sleep();  //动物要睡觉........
    }
}
  • 抽象类的子类
    — 要么重写抽象类中的抽象方法;要么是抽象类

抽象类的成员特点:

  • 成员变量:
    — 可以是变量、也可以是常量。
  • 构造方法:
    — 有构造方法,但是不能被实例化。作用用于子类访问父类数据初始化。
  • 成员方法:
    — 可以有抽象方法:限定子类必须完成某些动作。
    —也可以有非抽象方法:提高代码的复用性。

/**
 * 抽象类  父类
 */
public abstract class Person {
    int age = 18;
    final String city = "武汉";

    public Person() {
    }

    public Person(int age) {
        this.age = age;
    }

    public void eat(){
        age = 23;
        System.out.println("人要吃饭........");
        System.out.println(age);   //23
        System.out.println(city);  //武汉
    }

    public abstract void  study();

}




/**
 * 学生类
 */
public class Student  extends Person{
    @Override
    public void study() {
        System.out.println("学生要好好敲代码.............");
    }

}
    

/**
测试类
*/
public class TestPerson {
    public static void main(String[] args) {
        Person p = new Student();
        p.eat(); //人要吃饭........
        p.study();   //学生要好好敲代码.............

    }
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值