zoukankan      html  css  js  c++  java
  • 浅谈Java三大特性之继承

    前言

    类的继承性是面向对象语言的基本特性,多态性前提是继承性。Java 支持继承性和多态性。——Java从小白到大牛

    继承:三大特性之一,关键词:extends

    简单用伪代码去介绍一些

    • 假设需要定义个student类

    public class Student{
       private String name;//名字
       private int age;//年龄
       private int sex;//性别
    }
    • 再来个需求,需要定义一个学生Andy,不用继承时候,需要一个个去定义;

    public class Andy{
       private String name;
       private int age;
       private int sex;
       private String country;//新增一个国家信息
    }
    • 从上面看两者有着很多的相似的重复定义的东西,如果使用继承去写这段代码就可以如下:

    public class Andy extends student{
    private String country
    }

    所以从上面可以看出类的继承大致用途,Andy类已经继承了Student类,上面的父类便是student,extends后面跟着的。继承的时候,要明确指出,要不然就是在Java标准根类Object进行继承。

    再者,在继承的过程中,除了你可以在新的类中去添加东西,也不一定非得使用基类的方法属性等。

    • 还可以有多层继承关系(下面的输出是随便定义的伪代码,可以是直接输出某一些语句,方便运行查看)

    class Art{
    Art(){输出1}
    }
    class Music extends Art{
    Music(输出2)
    }
    class Dance extends music{
    public Dance(){输出3}
    public static void main(String args[]){
    dance x = new dance();
    }
    }
    //输出的顺序是1 2 3

    父类与子类的构造函数问题

    • 若不在类中定义构造函数,会默认生成一个无参的函数构造器,如果有了就不会。(构造器即构造函数,与类同名,在初始化的时候就被调用,,默认的构造函数是不带任何参数的)

    class Art{


    //等同于下面
    class Art{
    public Art(){
    //
    }
    • super关键字

    Java用super表示超类的医生,当前类是从超类继承来的。

    class Game{
       int h;
       Game(int i){//构造函数
           System.out.println("this is a game!");
      }
       public static void printg(int d){//普通函数
           System.out.println("12");
      }
    }
    class ballGame extends Game{

       ballGame(int i){
           super(i);//调用父类的构造器,漏了这句就会报错,显示there is no default constructor available
           System.out.println("ballGame is coming!");
           super.h = 3;//访问父类的属性
      }
    }

    super可以用于访问父类定义的属性,用于调用父类中的成员方法,super代表父类的内存空间。可以访问父类的父类

    class Game{
       int h;
       Game(int i){//构造函数
           System.out.println(i);//输出
           System.out.println("第一层");
      }
       public static void printg(int d){//普通函数
           System.out.println("1");
      }
    }
    class ballGame extends Game{
       ballGame(int i){
      super(i);//调用父类的构造器
      System.out.println("第二层");
      super.h = 2;//访问父类的属性
      }
    }

    public class jichengSuper extends ballGame{
       jichengSuper(int b) {
      super(b);//调用的是上面父类的构造函数,将输出3
        int a = super.h ;//将第二层里的3赋值给a
        System.out.println(a);//打印
      }
       public static void  main(String args[]){
           new jichengSuper(3);//这里的3将代进去上面的构造函数jichengSuper中
           System.out.print("最后一层");
      }

    }
    /**
    *output:
    3
    第一层
    第二层
    2
    最后一层
    */

     

    • 接口在实现的时候,在类中一定要实现接口的抽象方法

    • 而继承不用,想要用哪个再用

     

    others

    可以有多个接口但是只能有一个继承。一般情况下,一个子类只能继承一个父类,这称为“单继承”,但有的情况下一个子类可以有多个不同的父类,这称为“多重继承”。在Java中,类的继承只能是单继承,而多重继承可以通过实现多个接口实现。

     

  • 相关阅读:
    Java设计模式——单例模式
    关于 "static" 关键字的那点事
    安卓 修改系统时间
    android sdk 5.0下载步骤
    Android开发中调用系统窗口的方法
    Eclipse 导入已有工程时.classpath和.project文件拒绝访 ...
    Android开发错误总结
    CursorIndexOutOfBoundsException
    html移动端适配方案rem
    pc端和移动端的viewport 以及 像素的含义
  • 原文地址:https://www.cnblogs.com/yhycoder/p/12169161.html
Copyright © 2011-2022 走看看