java抽象类和抽象方法[通俗易懂]

java抽象类和抽象方法[通俗易懂]1.抽象的概念2.抽象类和抽象方法的使用1//抽象方法和抽象类的格式:2/*抽象方法:就是加上abstract关键字,然后去掉大括号,直接分号结束;3抽象类:抽象方法所在的类,必须是抽象

大家好,又见面了,我是你们的朋友全栈君。

1.抽象的概念

java抽象类和抽象方法[通俗易懂]

 

2.抽象类和抽象方法的使用

 1 //抽象方法和抽象类的格式:
 2 /*抽象方法:就是加上abstract关键字,然后去掉大括号,直接分号结束;
 3 抽象类:抽象方法所在的类,必须是抽象类才行,在class之前的写上abstract即可。
 4 
 5 如何使用抽象类和抽象方法
 6 1.不能直接创建(new)抽象类对象
 7 2.必须用一个子类来继承抽象父类
 8 3.子类必须覆盖重写抽象父类当中所有的抽象方法
 9 覆盖重写实现:子类去掉抽象方法的abstract关键字,然后补上方法体大括号
10 4.创建子类对象进行使用*/
11 
12 public abstract class Animals {
13     //这是一个抽象方法,代表吃东西,但是具体吃什么(大括号的内容)不确定
14     public abstract void eat();
15     //这是普通的成员方法
16     public void normalMethod(){
17         System.out.println("这是普通成员方法");
18 
19     }
20 }
21 
22 
23 
24 public class Cat extends Animals{
25     @Override//父类抽象方法的重写
26     public void eat(){
27         System.out.println("猫吃鱼");
28     }
29 }
30 
31 
32 public class DemoAbstract {
33     public static void main(String[] args) {
34         Cat cat = new Cat();
35         cat.eat();
36         cat.normalMethod();
37     }
38 }

3.抽象方法和抽象类的注意事项

java抽象类和抽象方法[通俗易懂]

 

 3.1

 1 //抽象类中,可以有构造方法,是供子类创建对象时,初始化父类成员使用的
 2 
 3 public abstract class Fu001 {
 4     public Fu001(){
 5         System.out.println("父类抽象类构造方法执行");
 6     }
 7     public void normalMethod(){
 8         System.out.println("普通成员方法");
 9     }
10 
11     public abstract void eat();
12 }
13 
14 
15 public class Zi001 extends Fu001 {
16     public Zi001(){
17         //super();
18         System.out.println("子类抽象方法执行");
19     }
20     @Override
21     public void eat(){
22         System.out.println("孩子吃饭");
23     }
24 }
25 
26 
27 public class DemoFuZi {
28     public static void main(String[] args) {
29         Zi001 zi = new Zi001();
30         zi.eat();
31         zi.normalMethod();
32     }
33 }

3.2抽象类中的子类,必须重写抽象父类中所有的抽象方法,否则编辑无法通过会报错。除非该子类也是抽象类。

 1 //最高的抽象父类
 2 public abstract class Animal {
 3     public abstract void eat();
 4     public abstract void sleep();
 5 }
 6 
 7 
 8 public abstract class Dog extends Animal{  //该子类也是抽象类,不用重写所有父类方法
 9     @Override
10     public void eat(){
11         System.out.println("狗啃骨头");
12     }
13 
14 }
15 
16 
17 public class DogGolden extends Dog {
18     @Override
19     public void sleep(){
20         System.out.println("呼呼呼");
21     }
22 }
23 
24 public class Ha2 extends Dog{
25     @Override
26     public void sleep(){
27         System.out.println("嘿嘿嘿");
28     }
29 }

4.继承综合练习

java抽象类和抽象方法[通俗易懂]

 1 package RedListTest;/*
 2  *@Author:lcc
 3  *@Date:2022/3/13-03-13-16:07
 4  *@Description:RedListTest
 5  *@version:1.0
 6  */
 7 
 8 public class User {
 9     private String name;
10     private int money;
11 
12     public User(){
13 
14     }
15 
16     public User(String name, int money) {
17         this.name = name;
18         this.money = money;
19     }
20 
21     public void show(){
22         System.out.println("我叫"+name+",总共有"+money+"元");
23     }
24 
25     public String getName() {
26         return name;
27     }
28 
29     public void setName(String name) {
30         this.name = name;
31     }
32 
33     public int getMoney() {
34         return money;
35     }
36 
37     public void setMoney(int money) {
38         this.money = money;
39     }
40 }
 1 package RedListTest;/*
 2  *@Author:lcc
 3  *@Date:2022/3/13-03-13-16:17
 4  *@Description:RedListTest
 5  *@version:1.0
 6  */
 7 
 8 import java.util.ArrayList;
 9 //群主的类
10 public class Manager extends User{
11     public Manager(){
12 
13     }
14     public Manager(String name, int age) {
15         super(name, age);
16     }
17     public ArrayList<Integer> send(int totalMoney,int count){
18         //首先要有一个集合,用来存储若干个红包的金额
19         ArrayList<Integer> redList = new ArrayList<>();
20         //首先看一下自己有多少钱
21         int leftMoney = super.getMoney();
22         if(totalMoney> leftMoney){
23             System.out.println("对不起,余额不足");
24             return redList; //返回空集合
25         }
26         //扣钱就是重新设置余额
27         super.setMoney(leftMoney-totalMoney);
28 
29         //发红包需要平均拆分为count份
30         int avg = totalMoney / count;
31         int mod = totalMoney % count;  //分完剩下的零头
32 
33         //除不开的零头,包在最后一个红包中
34         //下面把红包一个一个放到集合里
35         for (int i = 0; i < count-1; i++) {
36             redList.add(avg);
37         }
38         //最后一个红包
39         int last = avg+mod;
40         redList.add(last);
41 
42         return redList;
43 
44     }
45 
46 }
package RedListTest;/*
 *@Author:lcc
 *@Date:2022/3/13-03-13-16:53
 *@Description:RedListTest
 *@version:1.0
 */

import java.util.ArrayList;
import java.util.Random;

public class Member extends User {
    public Member() {
    }

    public Member(String name, int member) {
        super(name, member);
    }

    public void  receive(ArrayList<Integer> list){
        //从多个红包中随机抽取一个,给我自己
        //随机获取集合当中的一个索引编号
        int index = new Random().nextInt(list.size());
        //根据索引,从集合当中删除,并且得到被删除的红包,给我自己
        int delta = list.remove(index);
        //当前成员自己本来有多少钱。
        int money = super.getMoney();
        //加法,并且重写设置回去。
        super.setMoney(money+delta);
    }
}
 1 package RedListTest;/*
 2  *@Author:lcc
 3  *@Date:2022/3/13-03-13-17:01
 4  *@Description:RedListTest
 5  *@version:1.0
 6  */
 7 
 8 import java.util.ArrayList;
 9 
10 public class MainRedPacket {
11     public static void main(String[] args) {
12         Manager manager  = new Manager("群主",100);
13         Member one = new Member("成员A",0);
14         Member two = new Member("成员B",0);
15         Member three = new Member("成员C",0);
16 
17         manager.show();
18         one.show();
19         two.show();
20         three.show();
21         System.out.println("______________");
22         //群主总共发20块钱,分成3分。
23         ArrayList<Integer> redList = manager.send(20,3);
24         //三个普通成员收红包
25         one.receive(redList);
26         two.receive(redList);
27         three.receive(redList);
28 
29         manager.show();
30         one.show();
31         two.show();
32         three.show();
33 
34 
35     }
36 }

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/155750.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • PIC 指令周期_三菱plc分钟计时指令

    PIC 指令周期_三菱plc分钟计时指令一、PIC指令周期计算:设工作频率为:F(MHz);1个指令周期为1/(F/4)秒。二、PIC的指令 即汇编指令,不同系列指令数不一样。  8位单片机共有三个级别,有相对应的指令集。基本级PIC系列芯片共有指令33条,每条指令是12位字长;中级PIC系列芯片共有指令35条,每条指令是14位字长;高级PIC系列芯片共有指令58条,每条指令是16位字长。其指令向下兼容

    2022年10月9日
    0
  • 【目标检测】SPPNet算法详解

    【目标检测】SPPNet算法详解转载自http://blog.csdn.net/u011534057/article/details/51219959SpatialPyramidPoolinginDeepConvolutionalNetworksforVisualRecognition(SPP-net)1基础框架  CNN网络需要固定尺寸的图像输入,SPPNet将任意大小的图像池化生成固定长度的图像表示

    2022年6月3日
    45
  • 爱,该放弃吗_有一种爱叫做放手

    爱,该放弃吗_有一种爱叫做放手爱,绝不是缺了就找,更不是累了就换。   找一个能一起吃苦的,而不是一起享受的   找一个能一起承担的,而不是一起逃避的   找一个能对你负责的,而不是对爱情负责的   爱情是盲目的,生活是现实的   因为爱情只不过是人类为了逃避现实而衍生的产品   为了逃避现实,我寻找爱情   为了寻找爱情,我失去真情   失去了真情,才发现早已身陷虚情.   你以为爱情是什么?   一点点的动心,一点点的冲动

    2022年9月20日
    0
  • 圣诞节来了,怎能还没有圣诞树呢 快来为心爱的她送上专属的圣诞礼物叭~

    圣诞节来了,怎能还没有圣诞树呢 快来为心爱的她送上专属的圣诞礼物叭~圣诞节来了,怎能没有圣诞树!作为我的粉丝朋友们,我不允许大家还没有专属于自己的圣诞树!我要让大家收到最特别最美丽的圣诞树!

    2022年7月25日
    5
  • TVS二极管SM8S36A,花落谁家?

    TVS二极管SM8S36A,花落谁家?汽车的广泛应用,加速了汽车行业高速发展的同时,也促进了汽车电子行业快速发展。在这个注重智能化和用户体验的时代,汽车所面临的电路保护,诸如汽车总线、USB、CAN总线等,其防护等级越来越高,越来越复杂,同时也越来越严格了。对于汽车电子所需要运用的电路保护器件提出了更高的要求,其中使用最广泛的电路保护元器件之一SM8S系列TVS管,就是最有力的证明,汽车专用型电路防护瞬态电压抑制二极管。采购SM8…

    2022年9月23日
    0
  • 逻辑漏洞之越权、支付漏洞「建议收藏」

    逻辑漏洞之越权、支付漏洞「建议收藏」目录逻辑漏洞Web安全渗透三大核心方向输入输出登录体系、权限认证业务逻辑漏洞分类1、登录体系安全暴力破解cookie安全加密测试登录验证绕过任意注册2、业务一致性安全手机号篡改邮箱和用户名更改订单ID更改商品编号更改用户ID篡改流程顺序3、业务数据篡改金额数据篡改商品数量篡改最大数限制突破金额&优惠组合修改4、密码找回漏洞分析数据包,定位敏感信息分析找回机制修改数据包验证任意密码找回5、验证码突破暴力破解时间、次数突破回显测试验证码绕过测试验证检验机制猜解6、会话权限安全未授权访问水平&垂直

    2022年6月14日
    37

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号