• JAVA自学笔记(4)


    发现JAVA的有趣

    Day1 继承不是"继承"

    1.0 继承的格式

     

    public class FU {
        public void method()
        {
            System.out.println("Good night!");
        }
    }
    public class ZI extends FU {
    
    }
    public class Practice {
        public static void main(String[] args) {
            ZI zi=new ZI();
            zi.method();
        }
    }

    打印结果:

    Good night!

    2.0 继承中成员变量的访问特点

    public class FU {
        int num=10;
        int numfu=100;
        public void methodfu()
        {
            System.out.println(num);
        }
    }
    public class ZI extends FU {
        int num=20;
        int numzi=200;
        public void methodzi()
        {
            System.out.println(num);
        }
    }
    public class Practice {
        public static void main(String[] args) {
            ZI zi=new ZI();
            FU fu=new FU();
            System.out.println(zi.numfu);//100
            System.out.println(zi.numzi);//200
            //第一种
            System.out.println(zi.num);//20;
            System.out.println(fu.num);//10
            //第二种
            zi.methodzi();//20
            fu.methodfu();//10
            zi.methodfu();//10
        }
    }

    3.0  区分子类方法中重名的三种

    public class ZI extends FU {
       int num=20;
       public void methodzi()
       {
           int num=100;
           System.out.println(num);//100
           System.out.println(this.num);//20
           System.out.println(super.num);//10
       }
    }

     4.0 方法的覆盖重写

    继承中方法的覆盖重写 (典型事例)

    收旧手机!报废手机!手机换盆!换剪子!换菜刀!

    public class Oldphone {
        public void call()
        {
            System.out.println("didi~主人的电话来啦");
        }
        public void send()
        {
            System.out.println("叮咚! 有一条新信息");
        }
        public void show()
        {
            System.out.println("显示来电");
            System.out.println("来电铃声");
        }
    }
    public class Newphone extends Oldphone {
        @Override
        public void show(){
            super.show();
            System.out.println("显示姓名");
            System.out.println("显示头像");
        }
    }
    public class Phone {
         public static void main(String[] args) {
            Oldphone oldphone=new Oldphone();
            Newphone newphone=new Newphone();
            System.out.println("老手机的功能:");
    oldphone.call(); oldphone.send(); oldphone.show(); System.out.println(
    "============="); System.out.println("新手机的功能:"); newphone.call(); newphone.send(); newphone.show(); } }

    打印结果:

    老手机的功能:
    didi~主人的电话来啦
    叮咚! 有一条新信息
    显示来电
    来电铃声
    =============
    新手机的功能:
    didi~主人的电话来啦
    叮咚! 有一条新信息
    显示来电
    来电铃声
    显示姓名
    显示头像

    5.0 继承中构造方法的访问特点

     6.0 Java 继承的特点

    6.0 继承的案例 (群主发红包啦 快去抢!)

    首先 对案例的分析

    抢红包的实现

    public class User {
        private int money;
        private String name;
        public User(){};
        public User(int money, String name) {
            this.money = money;
            this.name = name;
        }
        public void show()
        {
            System.out.println("我叫"+getName()+" 我还有:"+getMoney());
        }
        public int getMoney() {
            return money;
        }
        public void setMoney(int money) {
            this.money = money;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
    }
    import java.util.ArrayList;
    
    public class Owner extends User{
        public Owner() {
            super();
        }
        public Owner(int money, String name) {
            super(money, name);
        }
        public ArrayList<Integer> send(int sendmoney,int count)//发多少 发几份
        {
            ArrayList<Integer> list=new ArrayList<>();
            int totalmoney=super.getMoney();//当前余额
            if(totalmoney<sendmoney) 
            {
                System.out.println("余额不足!");
                return list;
            }
            super.setMoney(totalmoney-sendmoney);
            int ave=sendmoney/count;
            int mod=sendmoney%count;//余数放在最后一个红包
            for(int i=0;i<count-1;i++)
            {
                list.add(ave);
            }
            list.add(ave+mod);
            return list;    
        }
        
        
           
    }
    import java.util.ArrayList;
    import java.util.Random;
    
    public class Member extends User {
    
        public Member() {
            super();
        }
        public Member(int money, String name) {
            super(money, name);
        }
        public void receive(ArrayList <Integer> list)
        {
             int index=new Random().nextInt(list.size());//0~list.size()-1
             int datamoney=list.remove(index);
             int leftmoney=super.getMoney();//原有的金额
             super.setMoney(datamoney+leftmoney);
        }
    }
    import java.util.ArrayList;
    
    public class Hongbao {
        public static void main(String[] args) {
            Owner owner=new Owner(100,"方时赫");
            Member one=new Member(0,"金硕珍");
            Member two=new Member(0,"金南俊");
            Member three=new Member(0,"闵玧其");
            owner.show();
            one.show();
            two.show();
            three.show();
            System.out.println("===============");
            ArrayList<Integer> list=owner.send(20, 3);
            one.receive(list);
            two.receive(list);
            three.receive(list);
            owner.show();
            one.show();
            two.show();
            three.show();
        }
    }

    打印结果:

    我叫方时赫 我还有:100
    我叫金硕珍 我还有:0
    我叫金南俊 我还有:0
    我叫闵玧其 我还有:0
    ===============
    我叫方时赫 我还有:80
    我叫金硕珍 我还有:6
    我叫金南俊 我还有:8
    我叫闵玧其 我还有:6

    Day3 抽象???

    1.0 抽象类的方法

    举个列子778吧

    public abstract class Animals {
         public abstract void eat();
    }
    public class Dog extends Animals{
        public  void eat(){
            System.out.println("狗吃骨头");
        }
    }
    public class Cat extends Animals{
        public  void eat(){
            System.out.println("猫吃鱼");
        }
    }
    public class Practice {
        public static void main(String[] args) {
            Cat cat=new Cat();
            Dog dog=new Dog();
            cat.eat();
            dog.eat();
        }
    }

    打印结果:

    猫吃鱼
    狗吃骨头

    2.0 抽象类的使用的注意事项

    Day 4 欢迎来到接口的世界!

    1.0 接口的定义

    2.0 接口的抽象方法的定义

    3.0 接口的抽象方法的使用

    public interface Myinter {
         public abstract void method1();
         public abstract void method2();
         public abstract void method3();
    }
    public class Interfaced implements Myinter {//实现类
    
        @Override
        public void method1() {
            System.out.println("这是第一个方法!");
        }
    
        @Override
        public void method2() {
            System.out.println("这是第二个方法!");
        }
    
        @Override
        public void method3() {
            System.out.println("这是第三个方法!");
        }
    
    }
    public class Practice {
        public static void main(String[] args) {
            Interfaced inte=new Interfaced();
            inte.method1();
            inte.method2();
            inte.method3();
        }
    }

    打印结果:

    这是第一个方法!
    这是第二个方法!
    这是第三个方法!

    4.0 接口的默认方法的定义

    5.0 接口的默认方法的使用

    public interface Myinter {
         public abstract void method1();
         public abstract void method2();
         public abstract void method3();
         public default void method4()
         {
             System.out.println("新增加的方法!");
         }
    }
    public class Interfaced implements Myinter {//实现类
    
        @Override
        public void method1() {
            System.out.println("这是第一个方法!");
        }
    
        @Override
        public void method2() {
            System.out.println("这是第二个方法!");
        }
    
        @Override
        public void method3() {
            System.out.println("这是第三个方法!");
        }
    
        @Override
        public void method4() {
            System.out.println("这是覆盖重写的 方法!");
        }
         
    }
    public class Practice {
        public static void main(String[] args) {
            Interfaced inte=new Interfaced();
            inte.method1();
            inte.method2();
            inte.method3();
            inte.method4();
        }
    }

    打印结果:

    这是第一个方法!
    这是第二个方法!
    这是第三个方法!
    这是覆盖重写的 方法!

    6.0 接口的静态方法的定义

    7.0 接口的静态方法的使用

    public interface Myinter {
        public static void methodstatic()
        {
            System.out.println("这是一个静态方法");
        }
    
    }
    public class Myinterface implements Myinter {
    }
    public class Main {
        public static void main(String[] args) {
            //错误写法  Myinterface.methodstatic();
            Myinter.methodstatic();
        }
    }

    打印结果:

    这是一个静态方法

    8.0 接口的私有方法的定义

    public interface Myinter {
       public default void method1()
       {
           System.out.println("这是一个默认方法1");
           method3();
       }
        public default void method2()
        {
            System.out.println("这是一个默认方法2");
            method3();
        }
        private  void method3()
        {
            System.out.println("AAA");
            System.out.println("BBB");
            System.out.println("CCC");
        }
    
    
    }
    public interface Myinter {
       public static void method1()
       {
           System.out.println("这是一个默认方法1");
           method3();
       }
        public static void method2()
        { 
            System.out.println("这是一个默认方法2");
           method3();
        }
        private static  void method3()
        {
            System.out.println("AAA");
            System.out.println("BBB");
            System.out.println("CCC");
        }
    
    
    }

     9.0 接口中常量定义和使用

    10.0 接口的小结

    11.0 继承父类并实现多个接口

    12.0 接口的多继承

  • 相关阅读:
    nodejs使用nodemailer发送邮件
    nodemaierl以hotmail(微软邮箱)作为发件人时报错554 5.2.0 STOREDRV.Submission.Exception: OutboundSpamException;
    react 项目部署nginx 配置问题(部署在子目录下)
    nodejs之glob与globby
    package-lock.json的作用
    webpack搭建项目流程(纯干货)
    JS-数组遍历中删除元素的方法优化
    递归tree结构的数据(修改antd tree结构的数据)
    【原创】如何优雅的转换Bean对象
    【解决方案】mysql大数据删除
  • 原文地址:https://www.cnblogs.com/mzq-/p/12961035.html
Copyright © 2020-2023  润新知