美文网首页
java-面向对象之继承

java-面向对象之继承

作者: pretty_rain | 来源:发表于2019-06-03 18:00 被阅读0次

1.继承的概念

把多个类中相同的成员给提取出来定义到一个独立的类中。然后让这多个类和该独立的类产生一个关系,多个类就具备了这些内容。这个关系叫继承。
用extends关键字表示,格式: class 类名 extends 父类

2.继承的好处

a: 提高了代码的复用性;
b:提高了代码的可维护性;
c:一个类继承一个类是多态的前提;

3.继承的弊端

a:让类的耦合性增强。这样某个类的改变,就会影响其他和该类相关的类;
b:打破了分装性;

4.java中继承的特点

a:一个类只能继承一个类,单继承;
b:可以多层继承,继承体系;

5.继承的注意事项

a:子类不能继承父类的私有成员;
b:子类不能继承父类的构造方法,但可以通过super()去调用;
c:不要为了部分功能而去继承;

6.继承中的成员关系

a:成员变量:
通过子类的方法访问成员变量的顺序:先找子类方法的局部范围内找,有就使用;再去子类的成员范围找,有就使用;再去父类的成员范围内找,有就使用;找不到就报错;
b:构造方法:
子类的构造方法会默认调用父类的无参构造,是为了子类访问父类数据的初始化,如果父类没有无参构造,在子类构造方法中用super指定调用父类的带参数的构造方法,或者是之类构造方法通过this调用自己的构造方法,这个被调用的构造方法一定会有一个访问了父类的带参构造方法;
c:成员方法:
通过子类对象访问成员方法的顺序:先在子类中找,有就使用;再去父类中找,有就使用;找不到报错;

7.Override和Overload的区别

Override方法重写:在子类中出现了和父类中一模一样的方法声明的方法;
注意事项:
a:子类不能重写父类的私有方法(因为私有方法不能被继承);
b:子类重写父类方法时访问权限不能更低,最好一致;
c:父类静态方法,子类也必须通过静态方法进行重写,其实这个算不上方法重写,但是现象确实如此
Overload方法重载:在一个类中出现了方法名称一样的方法;

8.this和super

this:代表当前类的对象引用;
super:代表父类存储空间的标识(可以理解为父类的引用,可以访问父类的)

9.分析执行结果

  • 1.案例
class Fu {
    static {
        System.out.println("静态代码块Fu");
    }

    {
        System.out.println("构造代码块Fu");
    }

    public Fu() {
        System.out.println("构造方法Fu");
    }
}

class Zi extends Fu {
    static {
        System.out.println("静态代码块Zi");
    }

    {
        System.out.println("构造代码块Zi");
    }

    public Zi() {
        System.out.println("构造方法Zi");
    }
}

class ExtendsTest2 {
    public static void main(String[] args) {
        Zi z = new Zi();
    }
}

分析:
a: 类加载的时候执行静态代码块,静态代码块被优先加载;
b:初始化子类的时候先初始化父类(分层加载);
c:静态代码块构造代码块构造方法执行顺序:静态代码块 > 构造代码块 > 构造方法;
输出结果:
静态代码块Fu
静态代码块Zi
构造代码块Fu
构造方法Fu
构造代码块Zi
构造方法Zi

  • 2.案例
class F{
 A a = new A();
 F(){
   System.out.println("F1");
 }
 F(int age){
  System.out.println("F2");
 }
}
class Z extends F{
     A a = new A();
   Z(){
   //super(1); 这时执行的是 F2
     System.out.println("Z");
   }
}
class A{
    A(){
        System.out.println("A");
    }
}
class ExtendsDemo1{
   public static void main(String[] args){
      new Z();
   }
}

分析:
a:类初始化过程:成员变量初始化-构造方法初始化;
b:子类的初始化:先进行父类初始化,然后进行子类初始化(分层初始化);
输出结果:
AF1AZ

相关文章

  • java-面向对象之继承

    1.继承的概念 把多个类中相同的成员给提取出来定义到一个独立的类中。然后让这多个类和该独立的类产生一个关系,多个类...

  • java基础-day10-面向对象4.0

    面向对象4.0 1. 面向对象之继承 1.1 生活中的继承 1.2 Java中的继承 1.3 子类对象创建,会调...

  • 【Java】面向对象:继承、组合和多态

    一. 面向对象三大特性之继承 1. 继承的概念 继承(inheritance)机制:是面向对象程序设计使代码可以复...

  • JavaScript之面向对象编程

    五、面向对象编程 目录:面向对象原型继承、面向对象class继承(ES6引入的) 1.面向对象原型继承 类:模板 ...

  • 面向对象之继承

    继承: 单继承和多继承 1.初识 class Father(object): #如果不写object默认继承 ...

  • 面向对象之继承

    内置对象 js提供的已经定义好的对象 Array,Date,Boolean,RegExp,String,Numbe...

  • 面向对象之继承

    继承 extends 关键字来继承类 被继承的类,我们称之为父类 继承后的类,我们称之为子类 子类继承父类非私有的...

  • 面向对象之继承

  • 面向对象之继承

    什么是继承 对象这种概念,本身就是十分方便的工具,我们可以通过概念将数据和功能封装到一个类中。因此可以对问题空间的...

  • 面向对象之继承

网友评论

      本文标题:java-面向对象之继承

      本文链接:https://www.haomeiwen.com/subject/kezqxctx.html