码迷,mamicode.com
首页 > 编程语言 > 详细

Java继承改进

时间:2016-11-25 22:46:11      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:head   提示   中继   没有   object类   上下   改进   避免   java   

一.java继承改进

首先,多继承的缺点:
1.继承多个父类,父类中方法名相同,产生歧义
2.父类中方法同名,子类未覆盖,也会歧义


所以,java改进,类只能单继承,接口可以多继承
接口中只有抽象方法和静态常量
1.抽象方法只能在实现接口类中实现,调用时调用实现类的方法
2.静态变量在编译期间将确定调用关系了,存在冲突也会在编译的时候提示错误
,而且引用变量一般直接使用类名或接口名,避免产生歧义。

 

1.1继承的初始化

继承关系是传递的。如,类C继承类B,类B继承类A,则类C既有从类B继承下来的变量和方法,也有从类A中继承下来的变量和方法,也可以有自己的变量和方法。继承下来的变量和方法尽管是隐式的,但仍是C的变量和方法。

构造方法是按照先超类后子类的方法进行的,所有超类会在子类访问它之前进行正确的初始化。

1.2super关键字

/*
super关键字
1.定义父类(Father)类
2.定义son类extends Father类
3.创建Son类对象
注意:
1.this和super很像,只能在有对象的前提下使用,不能在静态上下文使用
2.子类的构造函数默认第一行会调用父类无参数构造函数,隐式语句,super(),
  如果父类无参数构造函数不存在,编译报错
3.构造函数间的调用智能放在第一行,只能调用一次。super()和this()不能同时存在构造函数第一行
题目
如果开发者自定义了一个类,没有显示的进行类的继承,那么该类中成员函数是否可以使用super关健健字?
答案:可以使用,继承了Object类,Object类是所有类的父类。

重载(overload)和重写(override)
重载:
    前提:所有重载函数必须在同一个类中
    特点:函数名相同,参数列表不同,其他无关(访问控制符,返回值类型)
重写:
    前提:继承
    特点:函数名相同,参数列表相同
    子类的返回值类型要小于或等于父类的返回值类型
*/
class Super
{
    public static void main(String[] args) 
    {
        Son bigHead=new Son(11);
        bigHead.run();
        System.out.println("Hello World!");
    }
}

class Father
{
    int x=1;

    Father()
    {
        System.out.println("这是父类无参数构造");
    }

    Father(int x)
    {
        this.x=x;
        System.out.println("这是父类有参数构造");
    }

    void speak()
    {
        System.out.println("我是父亲");
    }
}

class Son extends Father
{
    int y=0;

    Son()
    {
        System.out.println("这是子类无参数构造");
    }

    Son(int y)
    {
        this.y=y+x;
        System.out.println("这是子类有参构造函数");
    }

    void run()
    {
        super.speak();        //访问父类的函数
        System.out.println("我是儿子"+"今年"+y+"岁");
    }
}

 

Java继承改进

标签:head   提示   中继   没有   object类   上下   改进   避免   java   

原文地址:http://www.cnblogs.com/doStudying/p/6102953.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!