浅谈Java三大特性之继承

 

前言

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

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

简单用伪代码去介绍一些

  • 假设须要定义个student类内存

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

public class Andy{
   private String name;
   private int age;
   private int sex;
   private String country;//新增一个国家信息
}
  • 从上面看二者有着不少的类似的重复定义的东西,若是使用继承去写这段代码就能够以下:it

public class Andy extends student{
private String country
}

因此从上面能够看出类的继承大体用途,Andy类已经继承了Student类,上面的父类即是student,extends后面跟着的。继承的时候,要明确指出,要否则就是在Java标准根类Object进行继承。class

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

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

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中,类的继承只能是单继承,而多重继承能够经过实现多个接口实现。

相关文章
相关标签/搜索