java_day8练习题

Java基础第8天练习题

练习1

一、需求说明:定义子父类,父类如果被final修饰,测试子类能否继承父类。
二、再定义普通的子父类,父类中有方法被final所修饰,测试子类能否重写该方法。
三、定义一个类,该类中有final修饰的变量,并对其进行初始化,在该类中定义一个普通方法,测试这个变量值能否修改。

1.2.操作步骤描述
1.创建Father类,该类被final修饰。
2.创建Son类,并继承Father类,查看编译结果。
3.将上述内容注释掉,接下来,定义普通的子父类关系。
4.在父类中定义被final所修饰的method方法,方法中打印内容为method father
5.子类中重写父类中method方法,打印内容为method son,查看编译结果。
6.在该子类中定义一个成员变量age,初始化值为10,对该成员变量用final所修饰。
7.在该子类中定义show方法,在方法中,将age值改为20,并打印age值。
package com.scy.day8;

public final class Father {
   
}
package com.scy.day8;

public class son extends Father {
   
}
结果:Error:(3, 26) java: 无法从最终com.scy.day8.Father进行继承
package com.scy08;

public  class Father {
   
    public Father(){
   }

    public final void method(){
   
        System.out.println("method father");
    }
}
package com.scy08;

public class Son extends Father {
   
    public Son (){
   }

    @Override
    public final void method(){
   
        System.out.println("method son");
    }
}
java: com.scy08.Son中的method()无法覆盖
com.scy08.Father中的method()
 被覆盖的方法为final
package com.scy08;

public class Son extends Father {
   
    public final int age =10;
    public Son (){
   }
    @Override
    public  void method(){
   
        System.out.println("method son");
    }
    public void show(){
   
        this.age = 20;
        System.out.println(age);
    }
}
package com.scy08;
public class Test {
   
    public static void main(String[] args) {
   
        Son s = new Son();
        s.show();
    }
}
Error:(14, 13) java: 无法为最终变量age分配值

练习2

一、需求说明:定义学生类,学生类有三个属性:name、age、graduateFrom(此属性用static修饰),该类中有成员show方法,方法中打印三个成员变量的值。
二、在测试类中创建该学生对象,为对象中的成员变量赋值,并调用show方法。
三、在测试类中再次创建学生对象,为对象中的成员变量赋值,并调用show方法。
四、发现问题,每次创建学生对象都需要给学生的毕业院校属性进行赋值,那么当学生的毕业院校都属于同一所学校时,这样每次创建对象都需要重新赋值很不方便,故而,将该属性graduateFrom新增static所修饰,让这个成员变量被所有对象所共享。
2.2.操作步骤描述
1.定义学生类,学生类有三个属性:name、age、graduateFrom,该类中有成员show方法,方法中打印三个成员变量的值
2.在测试类中创建该学生对象,为对象中的成员变量赋值,并调用show方法。
3.在测试类中再次创建学生对象,为对象中的成员变量赋值,并调用show方法。
4.发现问题,每次创建学生对象都需要给学生的毕业院校属性进行赋值,那么当学生的毕业院校都属于同一所学校时,这样每次创建对象都需要重新赋值很不方便,故而,将该属性graduateFrom新增static所修饰,让这个成员变量被所有对象所共享。
5.在测试类中创建两次学生对象,第一次创建学生对象时,给对象中的属性赋值,并调用show方法,第二次创建学生对象时,只给对象中的name、age属性赋值,调用show方法。
6.发现第二个学生对象调用show方法时,打印的学生信息中发现,该学生的毕业院校和第一个学生对象一致,从而证明被static所修饰的成员被该类的所有对象所共享。
7.在第一次创建学生对象时,给该学生的静态变量graduateFrom赋值时,发现有黄色警告,说明该成员如果被静态所修饰,应该用类名直接调用,故而在创建对象之前先用类名调用成员
package com.scy08;	//Student类

public class Student {
   
    public String name;
    public int age;
    public static String graduateFrom;

    public void show(){
   
        System.out.println(name+age+graduateFrom);
    }
}
package com.scy08;

public class Test {
   
    public static void main(String[] args) {
   
        Student.graduateFrom = "南京大学";

        Student s = new Student();
        s.name  = "wang";
        s.age = 52;
        s.show();
        System.out.println("----------------");
        Student.graduateFrom = "北京大学";

        Student s1 = new Student();
        s1.name = "li";
        s1.age = 30;
        s1.show();
    }
}

结果:
wang52南京大学
----------------
li30北京大学

练习3

3.1.训练描述:【static方法的访问特点】
一、需求说明:定义学生类,类中有静态成员变量和非静态成员变量,有两个非静态成员方法show()、show2()和两个静态成员方法show3()、show4()
二、在学生类中演示静态方法能否访问静态成员及非静态成员,在非静态方法能否访问非静态成员及静态成员,并在静态中演示能否与this、super连用。

3.2.操作步骤描述
1.定义学生类,学生类有静态属性age,初始值为30。非静态属性name,初始值为林青霞
2.在该类中定义非静态方法show()、show2(),再定义静态方法show3()、show4()
3.在show2()方法与show4()方法中,方法体不需要写内容。
4.在非静态方法show()中打印name和age值,调用show2()、show4()方法,并用this调用成员变量为其赋值。
5.在静态方法show3()中打印name和age值,调用show2()、show4()方法,并用this调用成员变量为其赋值
package com.scy08;

    public class Student {
   
        public String name="林青霞";
        public static int age=30;
        public void show1(){
   
            System.out.println(name+age);
            show2();
            show4();
            this.name = "王力宏";
            this.age = 10;
            System.out.println(name+age);
        }
        public void show2(){
   
        }
        public static void show3()
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值