• Java日志第17天 2020.7.22


    Java继承的三个特征

    1.Java语言是单继承的,一个类的直接有且仅有一个。

    若一个子类有多个父类,当父类有相同方法名时,子类无法正常调用。

    2.Java语言可以多级继承。

    public  class A{}

    public class B extends A{}

    public class C extends B{}

    如B继承A,C继承B,A也叫C的父类,只是间接继承。

    *java.lang.Object是最高父类

    3.一个子类只能有一个父类,但一个父类可以有多个子类。

    抽象

    如果父类当中方法不确定方法体的实现,那么该方法定义为抽象方法。

    抽象方法所在的类,定义为抽象类

    public abstract class A{ //A为抽象类

      public abstract void method();// 抽象方法

    }


    如何使用抽象类和抽象方法

    1.不能直接创建new抽象类对象

    2.必须有一个子类继承父类

    3.子类必须覆盖重写父类中所有抽象方法

    4.创建子类对象使用

     

    抽象类注意事项

    1.抽象类不能创建对象,如果创建,编译无法通过而报错。

    2.抽象类中,可以有构造方法,是供子类创建对象时,初始化父类成员使用的。

    3.抽象类中,不一定包含抽象方法,但是有抽象方法的类必定是抽象类。

    4.抽象类的子类,必须重写先后抽象父类中所有抽象方法,否则,编译无法通过而报错,除非该子类也是抽象类。

     

     

    实例:群主发红包(继承方法的使用)

    定义User类,有姓名和金额等变量

    public class User {
        private String name;//姓名
        private int money;//钱包金额
    
        public User(){
        }
        public User(String name, int money) {
            this.name = name;
            this.money = money;
        }
        //显示用户信息
        public void display(){
            System.out.println("我是"+name+",余额"+money+"元");
        }
    
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getMoney() {
            return money;
        }
        public void setMoney(int money) {
            this.money = money;
        }
    }

     

     定义群主Manager类,实现发红包功能

    import java.util.ArrayList;
    
    public class Manager extends User {
        public Manager(){
    
        }
    
        public Manager(String name,int money){
            super(name,money);
        }
    
        public ArrayList<Integer> send(int totalMoney, int count){
            //一个集合存储若干个红包的金额
            ArrayList<Integer> readList = new ArrayList();
    
            //检查群主余额
            int leftMoney = super.getMoney();
            if(totalMoney > leftMoney){
                System.out.println("余额不足");
                return readList;
            }
    
            super.setMoney(leftMoney - totalMoney);
    
            int avg = totalMoney / count;
            int mod = totalMoney % count;
    
            for (int i = 0; i < count-1; i++) {
                readList.add(avg);
            }
            int last = avg + mod;
            readList.add(last);
    
            return readList;
        }
    }

    定义成员Member类,实现收红包功能
    import java.util.ArrayList;
    import java.util.Random;
    
    public class Member extends User {
        public Member(){
    
        }
        public Member(String name,int money){
            super(name,money);
        }
    
        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);
        }
    }

    测试类

    import java.util.ArrayList;
    
    public class Test {
        public static void main(String[] args) {
            Manager manager = new Manager("群主",2000);
    
            Member member1 = new Member("member1",20);
            Member member2 = new Member("member2",60);
            Member member3 = new Member("member3",75);
    
            manager.display();
            member1.display();
            member2.display();
            member3.display();
            System.out.println("===================");
    
            System.out.println("发红包了!");
            ArrayList<Integer> readList = manager.send(1000,3);
            member1.receive(readList);
            member2.receive(readList);
            member3.receive(readList);
    
            manager.display();
            member1.display();
            member2.display();
            member3.display();
        }
    }
    结果如下

    明天学习接口咯!

  • 相关阅读:
    C#获取Word文档页数,并跳转到指定的页面获取页面信息
    GC 垃圾回收
    Open Flash Chart 之线图
    Open Flash Chart 之线图(二)
    Nullable可空类型
    System.AppDomain类
    C# 事件
    C#方法的参数 Ref Out Params 4种类型的参数
    单向链表
    C# 结构体 struct
  • 原文地址:https://www.cnblogs.com/Gazikel/p/13359931.html
Copyright © 2020-2023  润新知