java面对对象——抽象类

抽象类

        在面对对象中所有的对象都是通过类来描绘的,但是反过来,并不是所有的来都是用来描绘对象的;

        如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类

        有很多人对抽象类有着很大的疑惑,有时明明一个普通类就可以解决了,为什么非要整个抽象类

       (1) 抽象类有一个特征,其抽象方法,必须在子类重写(子类非抽象类),所以,当我们父类的方法,必须要子类重写实现时,用抽象类。例如:学生和老师在上课时都需要去教室,但是学生时听课。而老师是授课,要是写一个ToClass()方法,就需要用到抽象类

        (2)跟接口相比,接口的方法必须由实现类全部实现,接口方法比较多时,就会麻烦,而抽象类没有这样的限制。比如jdk 里面的 AbstractList,是ArrayList 的父类,里面全是方法,你只需要重写自己需要的

抽象类的特点

1abstract 修饰符可以用来修饰方法,也可以修饰类,如果修饰方法,那么该方法就是抽象方法;如果修饰类,那么该类就是抽象类

2、抽象类中可以没有抽象方法,但是有抽象方法的类一定要声明为抽象类

3、抽象类不能使用 new 关键字来创建对象,它是用来让子类继承

4、抽象方法只有方法的声明,没有方法的实现(没有方法体),它是用来让子类实现的

5、 在继承抽象类时一定要对父类的抽象方法进行实现 (否则代码会出现编译错误)或是将子类也改写为抽象类

6、抽象类只能单继承

抽象类的定义格式:

1 abstract class 抽象类名称{
2      属性;
3      访问权限 返回值类型 方法名称(参数){   //普通方法
4         [return 返回值];
5     }
6     访问权限 abstract 返回值类型 方法名称(参数);     //抽象方法
7 }

代码示例:

定义一个Animal抽象类,和两个普通类Cat和Dog,两个类都继承了Animal类,并在类中实现了抽象方法;

//一个抽象类    
abstract class Animal {
    public String sex;
    //抽象方法(没有方法体)
    public abstract void eat();
    //普通方法
    public void run(){
        System.out.println("动物跑... ...");
    }
}
//继承这个抽象方法
public class Dog extends Animal {
    //实现这个方法
    public void eat() {
        System.out.println("狗吃骨头");
    }
}
//继承这个抽象方法
public class Cat extends Animal{
     //实现这个方法
    public void eat() {
        System.out.println("猫咪吃鱼");
    }

}

 在main中运行:

public class Main {
    public static void main(String[] args) {
        Cat cat  = new Cat();
        cat.eat();
        Dog dog = new Dog();
        dog.eat();
    }
}

运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晗晗想吃烤鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值