老师为什么我这样做会报错,跟视频不一样??
视频中虽然在animal这个对象前面加上final,但也可以照样重新赋值,为什么我不行呢?而且我在animal实例化之后再实例化一次的时候,视频里面报错是在第二次实例化那一行报错的,为啥我反而是在第一次实例化那一行报错??报错都不一样呢?
package com.mason.animal; /* * final class: 该类没有子类,不允许被继承 public final class | final public class 两种方式都可以 * final 方法:该方法不允许被子类重写,但是可以正常被子类继承使用 * final 方法内局部变量:只要在具体被使用之前进行赋值即可,一旦赋值不允许被修改 * 类中的成员属性:赋值过程:1、定义直接初始化 2、构造方法 3、构造代码块 * */ public class Animal { /* * 私有private:只允许在本类中进行访问 * 公有public: 允许在任意位置访问 * 受保护protected:允许在当前类、同包子类/非子类、跨包子类调用,跨包非子类不允许 * 默认:允许在当前类、同包子类/非子类调用;跨包子类/非子类不允许调用 */ private String name="妮妮";//昵称 protected int month=2;//月份 private String species;//品种 public final int temp=12; //父类的构造不允许被继承,不允许被重写 public Animal() { System.out.println("我是父类的无参构造方法"); } public Animal(String name,int month) { this.name=name; this.month=month; System.out.println("我是父类的带参构造方法"); } private static int st1=22; private static int st2=23; final Animal animal=new Animal("凡凡",1); // animal=new Animal(); static { System.out.println("我是父类的静态代码块"); } { System.out.println("我是父类的构造代码块"); } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getMonth() { return month; } public void setMonth(int month) { this.month = month; } public String getSpecies() { return species; } public void setSpecies(String species) { this.species = species; } //吃东西 public void eat() { System.out.println(this.getName()+"在吃东西"); } public void eat(String name) { // final int temp=10;//方法内的局部变量 System.out.println(name+"在吃东西"); } public boolean equals(Object obj) { if(obj==null) return false; Animal temp=(Animal)obj; if(this.getName().equals(temp.getName())&&(this.getMonth()==temp.getMonth())) return true; else return false; } public boolean equals(Animal obj) { if(obj==null) return false; if(this.getName().equals(obj.getName())&&(this.getMonth()==obj.getMonth())) return true; else return false; } public String toString() { return "昵称:"+this.getName()+";年龄:"+this.getMonth(); } }
我把我的代码发出来,请老师帮我解答一下,谢谢老师!
2
收起
正在回答
1回答
我运行你的代码是没有问题的,请问同学用的是JDK的哪个版本呢?
老师使用的是JDK1.8
祝学习愉快!
Java零基础入门18
- 参与学习 人
- 提交作业 7317 份
- 解答问题 14452 个
想要入门学编程?多年一直活跃在编程语言排行版前列的Java是一个很好的选择。本路径将从Java基础语法、面向对象、常用工具类三部分,为你开启软件开发的大门!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星