Java继承机制总结

           Java 类的继承机制

在Java中继承是面向对象编程不可以忽略的机制,使用extends来表示继承关系——class A extends class B (表示A为子类,B为父类) ,而在一个类创建后总继承一个父类,如果我们没有定义,则是默认继承object类。就相当于儿子继承父母的财产,是默认的。。。
Java出于安全性和可靠性的考虑,仅支持单重继承,而通过使用接口机制来实现多重继承。
当一个类继承另外的一个类,子类继承extend父类的非private属性和方法,并且子类可以有自己的属性和方法,而在子类中要调用父类的非私有的方法和属性,可以使用super和this关键字调用。**this是当前类的调用**this.方法()| this.属性()。

接下来细说:

1。对于属性来说
@子类可以通过super.属性进行调用非私有(private)的属性
@对于父类的包访问权限成员变量,如果子类和父类在同一个包下,则子类能够继承;否则,子类不能够继承
@对于子类可以继承的父类成员变量,如果子类中属性与父类中的属性重名时,在子类中会自动隐藏父类的重名属性,而如果要调用父类的那个属性,得使用super.属性相当于super代表父类的存储空间标识进行调用。

2。对于方法来说
@子类能够调用父类的非私有(private)的方法,
@对于父类的包访问权限成员方法,如果子类和父类在同一个包下,则子类能够继承,否则,子类不能够继承。
@而对于方法同属性一样道理,子类和父类有同名的方法,叫方法覆盖,包括方法名和参数列表都相同 super.方法()调用父类方法。
构造方法不能覆盖

而对于一个子类和父类的运行顺序:
有继承关系的类,构造时先调用父类的构造器,然后调用子类的构造方法,如果有代码块,静态代码块优先执行,非静态代码块,先父后子,子类代码块后与父类的构造器,当代码块和构造方法出现时 先运行代码块

如:
1.先父类后子类例子
class Person {
public Person() {
System.out.println(“execute Person()”);
}
}
class Student extends Person {
public Student() {
System.out.println(“execute Student() “);
}
}
class PostGraduate extends Student {
public PostGraduate() {
System.out.println(“execute PostGraduate()”);
}
}
publicclass TestInherit {
publicstaticvoid main(String[] args) {
new PostGraduate();
}
}

A.  execute Person()

execute Student()
execute PostGraduate()
B. execute PostGraduate()
C. execute PostGraduate()
execute Student()
execute Person()
D. 没有结果输出

答案: A

  1. 子类父类静态代码块、子父构造器….例子
    class HelloA {
    public HelloA( ) {
    System.out.println(“HelloA”);
    }
    {System.out.println(“I’m A class”);
    }
    static {
    System.out.println(“static A”);
    }
    }
    publicclass HelloB extends HelloA {
    public HelloB( ) {
    System.out.println(“HelloB”);
    }
    {System.out.println(“I’m B class”);
    }
    static {
    System.out.println(“static B”);
    }
    publicstaticvoid main(String[] args) {
    new HelloB();
    }
    }

答案
static A
static B
I’m A class
HelloA
I’m B class
HelloB
3父类对象不能调用子类例子
class Base {
publicvoid method(){
System.out.print (“Base method”);
}
}
class Child extends Base{
publicvoid methodB(){
System.out.print (“Child methodB”);
}
}
class Sample {
publicstaticvoid main(String[] args) {
Base base= new Child();
base.methodB();
}
}

A   Base method
B.  Child method
C.  Base method
    Child method
D.  编译错误

答案: D

最后说一下Java中的继承机制好处多多 提高了代码的重用性,让类和类之间产生了关系, 为多态创造了条件。
大家一起学习进步啊啊啊啊

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值