Java面向对象之继承-创新互联

面向对象编程的特点:                                         1、可维护性                                         2、可扩展性                                         3、可移植性(可重用性)                                         4、灵活性好
一、继承  
继承就是为了重用代码。                         

在禄劝等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都网站设计、做网站、成都外贸网站建设公司 网站设计制作定制开发,公司网站建设,企业网站建设,品牌网站设计,网络营销推广,外贸营销网站建设,禄劝网站建设费用合理。二、继承的语法

class 子类 extends 父类 { ​​​​​​​ }

注意:

1.Java只支持单继承,不支持多继承。

2.Java支持多层(重)继承(继承体系)。

3.继承关系一般不希望超过三层,如果超过那么就考虑重构了

三、继承的内容 

​​​​​​

父类的私有的属性和行为都不能继承,其余都可以。
1.  父类和子类成员变量不同名

​
 //不存在同名的情况
    class Father {
        int a;
        int b;
    }

    class Son extends Father {
        int c;

        public void func() {
            a = 10;
            b = 20;
            c = 30;
        }
    }
}


​

在这里a,b直接访问的父类继承下来的a,b,能够直接进行赋值

2. 父类和子类成员变量同名

//父类和子类成员变量同名
    class Father {
        int a;
        int b;
    }

    class Son extends Father {
        int a;
        int b;
        int c;

        public void func() {
            a = 10;
            b = 20;
            c = 30;
        }
    }

在这里a,b访问的是子类中的a,b

总结:

1.如果访问的成员变量如果子类有,优先访问子类的。

2.如果子类中无,则访问父类中的,如果父类也没有,则编译失败. 

3.如果访问子类父类中都有,则优先访问子类的,采用的就是一个就近原则

3.如果同名要访问父类成员方法

访问父类的成员:

class Father {
        int a;
        int b;
    }

    class Son extends Father {
        int a;
        int b;
        int c;

        public void func() {
            super.a = 10;
            super.b = 20;
            c = 30;
        }
    }

  访问父类的方法:

class Father {
        public void func1() {
            System.out.println("Father: func1");
        }
    }

    class Son extends Father {
        public void func1() {
            System.out.println("Son: func1");
        }

        public void func2() {
            System.out.println("Son: func2");
        }

        public void func3() {
            super.func1();
            func2();
        }
    }

  在这里我们可以用super来指代父类,否则就会遵循就近原则直接访问子类的成员。

注意:

1.super只能在非静态方法中使用

2.在子类方法中,访问父类的成员变量和方法

4.super和this

相同点:

     1.super是一个关键字,代表父类的存储空间标识。(可以理解为父亲的引用)

     2.super和this的用法相似。

     3.this代表对象的引用(谁调用就代表谁);

     4.super代表当前子类对父类的引用。

     5.super();和this();都是在构造函数的第一行,不能同时出现。

不同点:

1.成员变量

this.变量        本类的super.变量       父类的

2.构造方法

this(...)        本类的super(...)       父类的

3.成员方法

this.方法名()        本类的    super.方法名()       父类的

5.继承代码块执行顺序

     1.父类静态代码块优先执行,然后子类静态代码块执行,静态代码块只执行一次

     2.在实例子类对象时,父类实例代码块和父类构造方法紧接着执行.

     3.子类的实例代码块和子类构造方法再执行

四、小结
  • 通过继承可以重用代码
  • 可以规范子类的一些行为
  • 通过继承还可以实现动态的多态.
扩展:         通过父类的引用依然可以指向子类的对象.(灵活性好)

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


网页标题:Java面向对象之继承-创新互联
文章分享:http://hbruida.cn/article/dhosih.html