zoukankan      html  css  js  c++  java
  • 类与对象课后作业

    1)动手动脑

     

    这段代码无法运行的原因是:类提供了一个自定义的构造方法,将导致系统不再提供默认构造方法。而定义Foo时没有参数,所以编译器报错。

    2)自找麻烦

     

    如果一个类中既有初始化块,又有构造方法,同时还设定了字段的初始值,谁说了算?

    执行类成员定义时指定的默认值或类的初始化块,到底执行哪一个要看哪一个“排在前面”。如果有构造方法,则以构造方法为准。

    (3)动手动脑

    当多个类之间有继承关系时,创建子类对象会导致父类初始化块的执行。

    public class Extend {
        public static void main(String[] args){
            Son s=new Son();
            s.show();
        }
    
    }
    
    class Father{
        String name;
        int age;
        {
            name="baba";
            age=51;
        }
    }
    
    class Son extends Father{
        String school="TD";
        void show()
        {
            System.out.println("name:"+name+"
    age:"+age+"
    school:"+school);
        }
    }

    运行结果:

    (4)动手动脑

    请运行TestStaticInitializeBlock.java示例,观察输出结果,总结出“静态初始化块的执行顺序”。

    静态初始化块只执行一次。 创建子类型的对象时,也会导致父类型的静态初始化块的执行。

    (5)有趣的问题

    静态方法中只允许访问静态数据,那么,如何在静态方法中访问类的实例成员(即没有附加static关键字的字段或方法)?

    public class Test2 {
        public static void main(String[] args) 
        {
            Test t=new Test();
            int a=t.getyear();
            t.input1(); 
            Test.input(a);
            t.input(a);
         }
    }
    class Test
    {
        int year = 100;
        public int getyear()
        {
            return year;
        }
        public static void input(int a)
        {
            System.out.println("静态"+a);
        }
        public void input1()
        {
            System.out.println("实例");
        }
    }

    (6)神奇代码

    因为它们调用的Interger类的方法不同,所以结果不同。

    (7)课后作业

    public class Test3 {
        public static void main(String[] args)
        {
            Testyu t=new Testyu();
            Testyu s=new Testyu();
            Testyu r=new Testyu();
            System.out.println(s.getcount());
        }
    }
    
    class Testyu{
        private static int count=0;//静态初始化
        {
            count++;//统计调用次数
        } 
        public int getcount()
        {
            return count;
        }
    }

    运行结果:

  • 相关阅读:
    Jmeter的两种录制脚本的方式
    【.NET】设置EntityFramework中decimal类型数据精度 [转]
    vscode格式化vue不换行
    mysql5.7 noinstall 安装 【转载】
    配置STP、RSTP以及负载均衡
    配置3层交换机VLAN间通信
    配置单臂路由
    配置DTP
    配置trunk
    配置VLAN
  • 原文地址:https://www.cnblogs.com/a1264393659/p/4887224.html
Copyright © 2011-2022 走看看