定,private修饰的变量和方法不可被子类继承,在子类中可以增加子类的变量和方法
3.(你写重复了)所有子类在产生对象是,都会默认去调用父类的构造方法,你可以测试一下。
4.动态绑定对两个有继承或者实现关系的类而言,下面是具体的细节:
1:编译器检查对象的声明类型和方法名。架设我们调用x.f(args)方法,并且
x已经被声明为C类的对象,那么编译器回列举出C类中所有的名称为f的方法和
从C类的超类的继承过来的f方法
2:接下来编译器检查方法调用中提供的参数类型。如果在所有名称为f 的方法中
有一个参数类型和调用提供的参数类型最为匹配,那么就调用这个方法,这个
过程叫做“重载解析”
3:当程序运行并且使用动态绑定调用方法时,虚拟机必须调用同x所指向的对象
的实际类型相匹配的方法版本。假设实际类型为D(C的子类),如果D类定义了
f(String)那么该方法被调用,否则就在D的超类中搜寻方法f(String),依次
类推
5.我觉得可以用public啊,final class的主要作用就是防止此类被继承,就是不想此类再有任何改变嘛~,抽象类就要加
public 吗?public只是修饰符而已,你可以去掉啊~~
//.......................................
补充:
可以在对象a中增加它自己的变量和方法吗?
不能!类就是模板,不能动态增加变量和方法!
如果非要增加:那用反射机制,好像可以实现。
但基本不存在此情况
就我所知,构造方法不能被继承。不过可以通过super()来引用
java.lang.String 和java.lang.Math应该是public类型的吧,加final就是终结类了,不可被继承。
另外,虚机团上产品团购,超级便宜
派生类通过new构造方法创建对象,在调用构造方法时,默认执行的第一行是super();即调用父类的无参构造方法。
如果父类没有无参构造方法,系统会调用父类的默认无参构造方法(也就是一个方法体为空的无参构造方法);如果父类存在有参的构造方法同时没有无参构造方法,子类的构造方法就不能调用父类无参构造方法,表现就是编译不能通过。
希望对你有所帮助。
如果父类构造方法有参数,在继承父类时,子类的构造器重必须传递父类构造器所需要的参数过去,即super(w,d);相当于调用了父类的构造方法。。其实就是多个值的传递而已。
不管你用不用super你都已经集成父类的全部构造函数,,,,,
当然不满意你可以重写
就是建立一个同名的方法(构造方法)
记住 名字 参数 都要一样才算
子类对父类的方法不满意可以重写。