public class TestSuper01 {
public static void main(String[ ] args) {
new ChildClass().f();//这个改成new ChildClass()为啥没有输出
//TestSuper02里面就能输出
}
}
class FatherClass {
public int value;
public void f(){
value = 100;
System.out.println ("FatherClass.value="+value);
}
}
class ChildClass extends FatherClass {
public int value;
public int age;
public void f() {
super.f(); //调用父类的普通方法
value = 200;
System.out.println("ChildClass.value="+value);
System.out.println(value);
System.out.println(super.value); //调用父类的成员变量
}
public void f2() {
System.out.println(age); }
}
可以啊
Worker类不是应该会自动定义一个无参构造器吗?还是父类定义构造器后会影响到子类自动定义构造器?

老师我想问下这个是什么意思,是新建一个ChildClass对象吗,那为什么不用新建FatherClass对象

首先你要知道老师这节课讲的是什么,老师讲的是继承,而继承就是子类继承了父类,老师这里演示的是调用子类的时候会默认调用到父类的无参构造。
老师我想问下这个表达什么意思

就是创建了一个ChildClass对象并且通过这个对象调用f方法。
TestSuper2 {
(String[] args) {
System..println()ChildClass02()}
}
FatherClass02{
fatherClass02{
System..println()}
}
ChildClass02 FatherClass02{
ChildClass02{
System..println()}
}
去掉class



老师我这个测试super()关键字的代码中,在main方法中
new ChildClass().f();
会报错,需要修改为
new FatherClass.ChildClass().f();
然后还会报错。直到把下面的ChildClass类变为静态类才不报错
static class ChildClass extends FatherClass
是我的代码打错误了,还是我的IDEA版本过高,和视频课中老师的版本不一样的原因,还是其他原因呢?求解。
类嵌套了
注意位置

为什么是public int value?
请问public在这是什么作用?
public表示公开的,是一个访问权限,表示在别的地方都可以访问的
package com.itbaizhan.oop;
/**
* 测试继承树的追溯
*/
public class TestSuper02 {
public static void main(String[] args) {
new ChildClass2();
}
class FatherClass2{
public FatherClass2(){
super();
System.out.println("创建FatherClass2");
}
}
class ChildClass2 extends FatherClass2{
public ChildClass2(){
super();//在一个类中,若是构造方法的第一行没有调用super(...)或者this(...);
// 那么Java默认都会调用super(),含义是调用父类的无参数构造方法
System.out.println("创建ChildClass2");
}
}
}
老师,运行不了,帮忙看下怎么修改,谢谢!

创建不了FatherClass,当前面加个void才不报错但还只显示最先出来的那个
方法名和类名写的不一样的
new ChildClass().f(); 是什么意思啊
new ChildClass()这个叫匿名函数,只能一次,new了一个 ChildClass对象,但是这个对象没有具体的名字,只能使用一次
这个外部可调用的外部指的是什么?
理解为另一个类。
public class TestSuper02 {
public static void main(String[] args) {
new ChildClass2();
}
}
class FatherClass2{
static {
System.out.println("静态初始化:ChildClass2");
}
public FatherClass2(){
System.out.println("创建MotherClass2");
}
}
class ChildClass2 extends FatherClass {
static {
System.out.println("静态初始化:ChildClass2");
}
public ChildClass2() {
System.out.println("创建ChildClass");
}
}

第一张图片是我的,第二张是讲课老师的,运行结果不太一样,请问老师我的代码是哪里有问题呢呢。
在子类的构造方法的第一行加上super();
class ChildClass2 extends FatherClass{
static{
System.out.println("静态初始化:ChildClass2");
}
public ChildClass2(){
super();//在一个类中,若是构造方法的第一行没有调用super(...)或者this(...); 那么Java默认都会调用super(),含义是调用父类的无参数构造方法。
System.out.println("创建ChildClass");
}
}
为啥不输出上面的??是
super
继承之前的FatherClass类吗??可为啥不输出上面的呢
代码发过来我看看
package com.itbaizhan.oop;
/**
* 继承树的追溯
*/
public class TestSuper02 {
public static void main(String[] args){
new ChildClass2();
}
}
class FatherClass2{
static{
System.out.println("静态初始化:FatherClass2");
}
public FatherClass2(){
super();
System.out.println("创建FatherClass2");
}
}
class ChildClass2 extends FatherClass2{
static{
System.out.println("静态初始化:ChildClass2");
}
public ChildClass2(){
super();//在一个类中,若是构造方法的第一行没有调用super(...)或者this(...); 那么Java默认都会调用super(),含义是调用父类的无参数构造方法。
System.out.println("创建ChildClass");
}
}
这个是有调用的呀,要不你微信找我我给你看看
new ChildClass2();
这个是什么作用呀?
public FatherClass2
这个是创建对象吗?
ChildClass2()
我看这个后面的2不加也不报错,是什么原因呀?
new ChildClass2()是创建对象,不加2也不报错是因为你有一个ChildClass类
为什么不会显示father?,虽然Childrenclass2没继承Fatherclass2,但程序执行前不是优先加载类吗,所以Fatherclass2类中的静态初始化块中的打印father应该会被执行吧?
没有发生继承关系啊