帮助大家理解java中的随机和继承,动态绑定.

简介: package com.ykmimi.javabianchengsixiang;/** * 形状的继承 随机形状生成器 * @author ukyor */import java.util.
package com.ykmimi.javabianchengsixiang;
/**
 * 形状的继承 随机形状生成器
 * @author ukyor
 */
import java.util.Random;

class Shape{
    public void draw() {}
    //擦除 erase
    public void erase() {}
}

//类 圆形 继承自基类 Shape形状
class Circle extends Shape{
    public void draw() {System.out.println("Circle.draw()");}
    public void erase() {System.out.println("Circle.erase()");}
}
//类 矩形 继承自基类 Shape形状
class Square extends Shape{
    public void draw() {System.out.println("Square.draw()");};
    public void erase() {System.out.println("Square.erase)");};
}
//类 三角形 继承自基类 Shape形状
class Triangle extends Shape{
    public void draw() {System.out.println("Triangle.draw()");};
    public void erase() {System.out.println("Triangle.erase)");};
}
//随机形状生成器
class RandomShapeGenerator{
    //随机数 (0~(30~110))~(120/200)
    private static int randomNumber = (int)((Math.random()*(30+Math.random()*80))+Math.random()*90);
private Random rand = new Random(randomNumber); public Shape next() { switch(rand.nextInt(3)) { default: case 0 : return new Circle(); case 1 : return new Square(); case 2 : return new Triangle(); } } public void print() { System.out.println(randomNumber); } } public class Shapes { //创建静态的随机形状生成器的对象 gen private static RandomShapeGenerator gen = new RandomShapeGenerator(); public static void main(String[] args) { //声明形状数组 s 长度为 9 ; Shape[] s = new Shape[9]; for(int i=0;i<s.length;i++) { //调用gen.next()方法返回随机数0~2 0 1 2 s[i] = gen.next(); } //遍历s数组到每个shp for(Shape shp: s) { //每个shp执行draw方法 shp.draw(); } //输出print()方法中的randomNumber gen.print(); } }

 

 

 

//

package 随机数;
/**
 * 理解随机数,随机数组
 * @author ukyozq
 */
import java.util.Random;

public class RandomNumberOrArray{

    public static void main(String[] args) {
    
        //声明随机数int rand.范围[0,98]
        int rand = (int)(Math.random()*99);
        //输出,每次运行会输出不同的数字.
        System.out.println(rand);
        
        //理所当然我们想到要用数组装入更多随机数
        int[] randArray = new int[10];
        for(int i=0;i<randArray.length;i++)
        {
            //随机数赋值到数组的每一位
            randArray[i]=rand;
        }
        for(int x:randArray)
        {
            //输出 但注意:结果的数据int虽然每次运行不同,为随机产生,
            //但数组的每一位都是这一个数.也就是说,该数组的每一位,都
            //只是赋值了这一个随机数.是相同的.
            System.out.print(x+" ");
        }
        
        //think:那什么办法生产随机的数到数组中呢?生成随机数组?
        //方法1,蠢的办法:声明多个rand.(rand1,rand2,rand3)
        int rand1 = (int)(Math.random()*99);
        int rand2 = (int)(Math.random()*99);
        int rand3 = (int)(Math.random()*99);
        //此输出确实不相同,将rand1,2,3分别赋值到数组的0,1,2位置上,
        //但是该方法蠢到不能再蠢.
        System.out.println("\n"+rand1+" "+rand2+" "+rand3);
        int rand4 = (int)(Math.random()*99);
        
        //在随机的生产中,除了Math还有Random的声明:
        Random rand_1 = new Random();
        //new Random()方法产生的是伪随机数
        System.out.println(rand_1);
        //这样输出↑只是输出的该对象而不是数字,输出数字使用方法:
        System.out.println(rand_1.nextInt(10));
        //↑该方法输出了范围[0,9]的随机数
        
        //那么用该方法赋值随机数组:
        for(int i=0;i<randArray.length;i++)
        {
            //随机数赋值到数组的每一位
            //nextInt(范围) 为[0,99]范围内的随机数
            randArray[i]=rand_1.nextInt(100);
        }
        for(int x:randArray)
        {
            System.out.print(x+" ");
        }
        
        
    }
}

 

将编程看作是一门艺术,而不单单是个技术。 敲打的英文字符是我的黑白琴键, 思维图纸画出的是我编写的五线谱。 当美妙的华章响起,现实通往二进制的大门即将被打开。
相关文章
|
3月前
|
Java 程序员
Java中的继承和多态:理解面向对象编程的核心概念
【8月更文挑战第22天】在Java的世界中,继承和多态不仅仅是编程技巧,它们是构建可维护、可扩展软件架构的基石。通过本文,我们将深入探讨这两个概念,并揭示它们如何共同作用于面向对象编程(OOP)的实践之中。你将了解继承如何简化代码重用,以及多态如何为程序提供灵活性和扩展性。让我们启程,探索Java语言中这些强大特性的秘密。
|
30天前
|
Java 开发者
在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口
【10月更文挑战第20天】在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口。本文揭示了这两种方式的微妙差异和潜在陷阱,帮助你更好地理解和选择适合项目需求的线程创建方式。
19 3
|
30天前
|
Java
在Java多线程编程中,实现Runnable接口通常优于继承Thread类
【10月更文挑战第20天】在Java多线程编程中,实现Runnable接口通常优于继承Thread类。原因包括:1) Java只支持单继承,实现接口不受此限制;2) Runnable接口便于代码复用和线程池管理;3) 分离任务与线程,提高灵活性。因此,实现Runnable接口是更佳选择。
37 2
|
30天前
|
Java
Java中多线程编程的基本概念和创建线程的两种主要方式:继承Thread类和实现Runnable接口
【10月更文挑战第20天】《JAVA多线程深度解析:线程的创建之路》介绍了Java中多线程编程的基本概念和创建线程的两种主要方式:继承Thread类和实现Runnable接口。文章详细讲解了每种方式的实现方法、优缺点及适用场景,帮助读者更好地理解和掌握多线程编程技术,为复杂任务的高效处理奠定基础。
30 2
|
30天前
|
Java 开发者
Java多线程初学者指南:介绍通过继承Thread类与实现Runnable接口两种方式创建线程的方法及其优缺点
【10月更文挑战第20天】Java多线程初学者指南:介绍通过继承Thread类与实现Runnable接口两种方式创建线程的方法及其优缺点,重点解析为何实现Runnable接口更具灵活性、资源共享及易于管理的优势。
34 1
|
1月前
|
Java 编译器 程序员
Java多态背后的秘密:动态绑定如何工作?
本文介绍了Java中多态的实现原理,通过动态绑定和虚拟方法表,使得父类引用可以调用子类的方法,增强了代码的灵活性和可维护性。文中通过具体示例详细解析了多态的工作机制。
42 4
|
2月前
|
Java 编译器
封装,继承,多态【Java面向对象知识回顾①】
本文回顾了Java面向对象编程的三大特性:封装、继承和多态。封装通过将数据和方法结合在类中并隐藏实现细节来保护对象状态,继承允许新类扩展现有类的功能,而多态则允许对象在不同情况下表现出不同的行为,这些特性共同提高了代码的复用性、扩展性和灵活性。
封装,继承,多态【Java面向对象知识回顾①】
|
1月前
|
Java 测试技术 编译器
Java零基础-继承详解!
【10月更文挑战第4天】Java零基础教学篇,手把手实践教学!
39 2
|
1月前
|
Java 编译器
在Java中,关于final、static关键字与方法的重写和继承【易错点】
在Java中,关于final、static关键字与方法的重写和继承【易错点】
23 5
|
1月前
|
Java
java继承和多态详解
java继承和多态详解
43 5
下一篇
无影云桌面