抽象类 抽象方法

抽象类
public abstract class Shape
 {  //抽象方法 
    //普通方法
  }
说明:
抽象类是用关键字abstract修饰的类;
抽象类中可以包含抽象方法和普通方法,也可以没有抽象方法。

抽象方法
 用abstract修饰的方法,且没有方法体。
 比如:
 abstract class shape{
   abstract double getArea();
 }
说明:
shape 是抽象类; 
getArea()是抽象方法,末尾以分号结束。

抽象类
(1)抽象类是对多个相似的类的抽象;
(2)抽象类用abstract定义;抽象方法用abstract定义且无函数体;抽象类中可以没有抽象方法,但包含抽象方法的类必须声明为抽象类。
(3)基于抽象类的子类中要给出抽象方法的具体实现(不同的子类有不同的实现方法——多态)
(4)(有点不理解啊) 抽象类不能实例化(即不能创建抽象类的对象,因为抽象方法无法执行),但可以声明抽象类的对象,用它引用不同子类的对象,从而实现:相同的语句(操作),实现不同的功能——多态

抽象方法
抽象方法是只有声明没有实现的方法,即方法体为空(通常使用分号;结束,而不是大括号{})。
抽象方法必须使用abstract关键字进行修饰。
含有抽象方法的类必须被声明为抽象类。
抽象类不能被实例化,即不能使用new关键字来创建抽象类的对象
抽象类的特点
不能被实例化:抽象类不能用来创建对象,它主要是用来被继承的。
可以包含抽象方法:抽象类中可以包含抽象方法,也可以包含非抽象方法。
子类必须实现父类的所有抽象方法(除非子类也是抽象类):如果子类不是抽象类,那么它必须实现继承自父类的所有抽象方法。
可以包含构造方法:虽然抽象类不能被实例化,但它可以有构造方法,这些构造方法主要用于被子类调用,进行初始化操作。
不能声明为final:因为final修饰的类不能被继承,而抽象类必须被继承才有意义。
可以声明为static(但通常指的是静态内部抽象类):这里的“可以”指的是抽象类可以包含静态成员(包括静态方法、静态变量等),但抽象类本身不能被声明为static,因为static只能用于修饰成员,不能修饰类(除了静态内部类)。
示例
java

abstract class Animal {  
    // 抽象方法  
    abstract void eat();  
  
    // 非抽象方法  
    void sleep() {  
        System.out.println("This animal sleeps.");  
    }  
}  
  
class Dog extends Animal {  
    // 必须实现继承自Animal类的抽象方法eat  
    @Override  
    void eat() {  
        System.out.println("Dog eats meat.");  
    }  
}  
  
public class TestAbstractClass {  
    public static void main(String[] args) {  
        // Animal myAnimal = new Animal(); // 错误,因为Animal是抽象类  
        Dog myDog = new Dog(); // 正确,Dog是Animal的子类,且实现了所有抽象方法  
        myDog.eat(); // 输出: Dog eats meat.  
        myDog.sleep(); // 输出: This animal sleeps.  
    }  
}



在这个例子中,Animal是一个抽象类,它包含了一个抽象方法eat和一个非抽象方法sleep。Dog类继承了Animal类,并实现了eat方法。由于Dog不是抽象类,因此它必须实现所有继承自Animal的抽象方法。最后,我们通过Dog类的对象来调用这些方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值