黑马程序员技术交流社区
标题:
谁帮我看看这个???
[打印本页]
作者:
Q932036165
时间:
2015-12-11 23:07
标题:
谁帮我看看这个???
class A{
public void a(){
System.out.println("A-a()");
}
public void b(){
this.a();
System.out.println("A--b()");
}
class B extends A{
public static void main(String[] args){
B bb=new B();
bb.b();
}
作者:
涵門子弟
时间:
2015-12-11 23:37
A-a()
A--b()
侄女,约吗?
作者:
zcbcba123
时间:
2015-12-12 00:14
我也认为是楼上的答案
A-a()
A--b()
因为B继承A那么在初始化B的时候就会运行父类(A)的默认构造,但是a和b不是默认构造,所以再运行B类的默认构造,可是也没有。然后就运行b方法,b方法B类里没有A里有。那么问题就来了,会不会运行父类里的b方法呢?一直也没关注这个问题。。= =测了下,直接就调了。。因为B里没有b,同时B继承了A。。。
作者:
王帅---
时间:
2015-12-12 09:50
A-a() A--b()
作者:
王帅---
时间:
2015-12-12 10:05
package tRY;
public class Try {
public static void main(String[] args) {
// 创建子类对象
Zi z=new Zi("zi的构造函数");
Zi i=new Zi();
z.show();
z.fangfa();
z.nowrite();
System.out.println(z.num);
}
}
class Fu{
int num =4;
Fu(){
System.out.println("fu的构造函数");
}
void fangfa(){
System.out.println("Fu");
}
// 当子类没有复写父类方法,将直接继承。
void nowrite(){
System.out.println("没有复写");
}
}
class Zi extends Fu{
// 与父类相同的变量名覆盖父类变量
int num =5;
// 调用super表示父类对象的引用
Zi(String a){
// 子类构造函数默认第一行有一条隐式语句 super();
System.out.println("覆盖父类变量::"+a);
}
Zi(){
System.out.println("zi的空参数构造函数");
}
void show(){
System.out.println("引用父类..."+super.num);
}
// 与父类相同的函数名是覆盖父类方法
void fangfa(){
System.out.println("覆盖父类方法:zi");
}
}
//注意:子类覆盖父类,必须保证子类权限大于等于父类权限,才可以覆盖,否则编译失败。
//静态只能覆盖静态。
//在对子类对象进行初始化时父类的构造函数也会运行;
//因为子类中所有的构造函数默认第一行都是 super();
//super();会访问父类中空参数的构造函数,该语句必须写在子类构造函数的第一行。
// final关键字:
//final可以修饰类,方法,变量。
//final修饰的类不可以被继承。
//final修饰的方法不可以被覆盖。
//final修饰的变量是一个常量。只能被赋值一次。
//内部类只能访问被final修饰的局部变量。
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2