java抽象类(abstract)

(一)说到抽象类,那么什么是抽象类呢?来个生活中的例子了解一下。比如给一个父类名字是图形,那么他的子类可能会是正方形,三角形,圆形等等,那么像这样的子类他们的面积都能通过公式求出来。现在就给你一个问题让你求出父类图形的面积
1.首先明确一点叫做图形的父类是有面积的
2.只是你不知道是什么图形,所以我们就说父类图形是抽象的
3.子类给出的具体图形是具体的类

(二)
抽象类:抽象方法所在的类,必须是抽象类才行,在class之前写上abstract;
抽象方法:就是加上abstract关键字,然后去掉大括号,直接分号结束;
如何使用抽象方法和抽象类呢
1.不能直接创建new抽象对象
2.必须用一个子类来继承抽象父类
3.子类必须覆盖重写抽象父类当中的所有的抽象方法(去掉abstract补上大括号)
4.进行使用创建子类对象使用

(三)下面来个例子,
定义一个抽象类Animal(动物),定义两个抽象方法eat(吃)和sleep(睡)。

package edu.edu.shengda3;

public abstract class Animal {     //抽象类
public abstract void eat();             //抽象方法1

public abstract void sleep();         //抽象方法2
}

这个时候注意正常来说需要定义一个具体的类来继承抽象类,那如果我偏不呢,这个时候可以再来一个抽象的子类Dog(狗)来继承父类Animal,子类复写父类中的方法

package edu.edu.shengda3;

public abstract class Dog extends Animal {
public void eat(){
    System.out.println("狗吃骨头");
}
}

到了这一步有人会说不是子类一定要继承父类的所用方法,才能运行成功吗?确实是这样的,但咱们可以继续深究一下。相对于Dog类,我们来两个具体的子类,二哈和金毛。这次Dog成了抽象的父类,二哈和金毛是两个具体的类。
二哈:

package edu.edu.shengda3;

public class Erha extends Dog {
public void sleep(){
    System.out.println("呼呼大睡");
}
}

金毛:

package edu.edu.shengda3;

public class Jinmao extends Dog {
public void sleep(){
    System.out.println("嘿嘿大睡");
}
 }

现在所有的的类都定义完了,来一个main方法,刚在第一点提到抽象类不能直接new,所以我们只能从具体类二哈和金毛下手:

package edu.edu.shengda3;

public class demomain {
public static void main(String[] args) {
    Erha e=new Erha();
    e.eat();
    e.sleep();
    System.out.println("=========");
    Jinmao j=new Jinmao();
    j.eat();
    j.sleep();
}
 }

输出结果如下:

在这里插入图片描述
再次强调:
1.抽象类不能创建对象
Animal an=new Animal();
Dog d =new Dog();//这样都是错误的
2.抽类中不一定要有抽象方法,但一定的是抽象类、
正如Dog代码所示
3.抽象类的子类必须覆写父类的所有方法,除非该子类也是抽象类,正如Dog代码中并没写完Animal中的所有方法,但是对于二哈和金毛这种具体的类必须覆写所有方法。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值