继承

来源:互联网 发布:王婉茹 黄翔 知乎 编辑:程序博客网 时间:2024/05/22 13:44


1、通过extends关键字继承

注意:1、类只支持单继承;2、多个类可以继承一个父类;3、可以多层继承,即一个类的父类可以再去继承另外的父类;

2、重写(即覆盖)  子类对继承的方法进行修改,即对父类的方法进行重写

子类的访问权限应大于父类

3、super关键字      用于访问父类的成员

3.1  使用super调用父类的成员的变量和方法,格式如下:

super.成员变量;

super.成员方法(参数);

3.2   使用super关键字调用父类的构造方法,格式如下

super([参数1,参数2······]); 且必需位于子类构造方法的第一行,并且只能出现一次。

当不写super时,子类在实例化时java会默认调用父类的无参数的构造函数,父类最好写一个无参构造函数,防止子类继承时出错。

4、final关键字      “”最终“的含义  

可用于修饰类、变量和方法。被final修饰的类、变量和方法有如下特性:

 4. 1     final修饰的类不能被继承;

 4.2     final修饰的方法不能被子类重写;

在父类中定义某个类时,不希望被子类重写,就可以用final对该方法进行修饰。

 4.3     final修饰的变量(成员变量和局部变量)是常量,只能赋值一次。

5、抽象类与接口

5.1 抽象方法:不包含方法体的方法,且必需使用abstract关键字修饰,例如:abstract void work();

使用abstract修饰的类为抽象类。包含抽象方法的类必需声明为抽象类,但抽象类可以不包含任何抽象方法。

抽象类不可以被实例化,因为抽象类中可能包含抽象方法,而抽象方法无方法体,不可以被调用。只有当子类继承了为抽象类的父类,并且在子类中将抽象类的抽象方法实现。

例如:

public class Oper  {   public static void main(String[]args){         Child child =new Child();        child.show();}     }   //定义抽象类abstract class Father{//定义抽象方法abstract void show();}//定义Child类继承抽象类Fatherclass Child extends Father{//实现抽象方法void show(){System.out.println("中华人民");}}
5.2接口 

当一个抽象类中所有方法都是抽象方法时,该类就可定义为接口。接口用interface关键字声明,

例如:

interface Father{int num = 2;  //定义全局变量void show();  //定义抽象方法}
接口中定义的方法和变量都包含一些隐式的默认修饰符,接口中定义的方法前含有隐式”public abstract“,即void show()实际上为”public abstract void show()“。接口中的变量前有”public static final“。

不能通过实例化对象的方式调用接口中的方法,当要调用接口中的方法时,需要定义一个类,使用implements关键字实现接口,并在类中实现接口中所有的方法。

例:

public class Oper  {   public static void main(String[]args){       Child child =new Child();//实例化Child对象      child.show();//调用Child类的show()方法}     }   //定义Father接口interface Father{int num = 2;  //定义全局变量void show();  //定义抽象方法}//定义Child类实现Father接口class Child implements Father{//实现show()方法public void show(){System.out.println("hhhh");}}
在程序中,还可以定义一个接口使用extends去继承另一个接口。

接口的特点:

1、接口中的方法都是抽象的,不能实例化对象;

2、当一个类实现接口时,如果这个类是抽象类,则实现接口中的部分方法即可,否则需要实现接口中的所有方法;

3、一个类通过implements关键字实现接口时,可以实现多个接口,接口之间用逗号隔开;

4、一个接口可以通过extends继承多个接口,接口之间用逗号隔开;

5、一个类在继承另一个类时还可以实现接口,extends在implements前。

0 0