-
为什么要在public class dog extends animol下面再建一个class lnitail呢
因为刚才 创建的 Animal ,Dog, Cat 都是普通的类,而程序运行都要从主类的main方法开始 public void main (String[],args) { },所以要创建一个主类 。视频中的主类命名为 lnitail。查看全部 -
Animal与dog是属于封装好的类,单独编译不能输出任何效果,需要通过主函数main才能输出
比如,就像老师建的对象Animal,dog等,如果它们的属性和方法全部写在main中(程序的执行需要在主函数买main中才能执行),就会又乱又复杂,所以将它们封装,你想输出什么样的效果,将它在main中写下来,就能输出效果啦
查看全部 -
你在调用内部类的方法时,输出的是newScore (是一个对象,最后得到的是它的存储地址),如果你想得到93这个结果,你需要声明一个int型的变量(我这里面是s),再把 newScore.getScore() 的结果赋给变量s(也就是 int s = newScore.getScore() ),最后输出s (这才是个整型变量)。
查看全部 -
请问,在调用内部类的方法时,为何不是同图中的的案例mi.print类似,而是int newscore = mi.getscore();.请讲解下,谢谢
图片案例中的print()方法,里面有输出代码,只要调用就可以直接用方法输出了,但是例题中的 getScore()方法不具有输出语句,是个具有返回值的方法,因此他需要在外面定义一个变量,用来存放输出返回值查看全部 -
Int的作用(因为他有返回值,而他的返回值是整型)
对方法而言,分为无参数无返回值,无参数有返回值,有参数无返回值,有参数有返回值四种。对于有返回值类型的方法必须给出返回类型。所以对于返回值是int型的方法必须带int。
查看全部 -
输出语句放在调用方法类内部时你要先对其进行变量的赋值才对,不然电脑怎么知道newScore在哪里,他不可能调用方法内部类的方法去解决的,因为没有访问权限啊!改成下面这样就可以了
int newScore = si.getScore();
System.out.println("姓名:" + Huida.this.name + "\n加分后的成绩:" + newScore);
查看全部 -
为什么有的在调用方法时不用加int?这里要加?
// 创建方法内部类的对象
MInner in=new MInner();
// 调用内部类的方法
int newScore=in.getScore();
System.out.println("姓名:" + name + "\n加分后的成绩:" + newScore);
}
内部类中创建了一个无参有返回值的方法,返回值返回加分后的成绩,in.getScore()这里调用内部类的方法并且返回加分后的成绩值,这个值需要有一个新的变量来接收,创建变量需要先声明变量的类型,然后in.getScore()中的值赋给了newScore变量。查看全部 -
为什么创建静态内部类的对象时,不需要外部类的对象,可以直接创建 内部类 对象名= new 内部类();但是创建普通内部类的对象时要先创建一个外部类对象?
这个类似于一个类的静态成员变量和普通成员变量的调用,静态成员变量是通过类名去调用,不用创建该类对象;而普通成员变量是通过创建一个该类的对象,使用该对象去调用。所以你这个亦同理查看全部 -
static修饰的静态方法中不能使用this, this关键字它的值是当前对象的引用.
用它来调用属于当前对象的方法
或者使用this处理方法中版成员变量和局部变量重名的情况.
而static修饰的静态方法、成员变量是属于一个类的,而不是某一个对象,this找不到具体的对象
1.成员内部类通过:外部类类名.this.外部类中的成员属性,来访问外部类中与内部类同名的成员变量
不能直接:外部类类名.外部类中的成员属性,因为非静态属性不能通过类名直接访问
2.静态内部类通过:外部类类名.外部类中的成员属性,访问外部类中的静态成员属性
通过:new 外部类名().非静态成员属性,访问外部类中的非静态方法
本人自己的观点,如果有不足或者错误欢迎大佬批评指正
查看全部 -
静态类可以使用this+成员名,也可以使用类名+成员名
在非静态中使用类名+this+成员名
查看全部 -
没返回值的方法不能用print输出。
查看全部 -
子类父类之间的转换
子类1转化为父类 再将实例化的父类转化子类2会出错
比如 狗转动物 再将此动物转化为猫 编译时是猫 运行时是狗
可以增加 instanceof 进行判断
查看全部 -
引用多态:
父类不可以调用子类独有的方法
查看全部 -
equals 比较的是对象的引用是否指向同一块地址
if (a.equals(b)){}比较的是地址
如果要用equls比较对象是否值相等
查看全部 -
父类如果继承Object类,那么子类所调用的父类属性全是哈希code值,如果要调用父类属性,需要在子类中加入
public String toString(){
return“子类 【age=“+age+”】”; }
查看全部
举报