老师为什么我这样做会报错,跟视频不一样??



视频中虽然在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 星