博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java-继承
阅读量:4986 次
发布时间:2019-06-12

本文共 2681 字,大约阅读时间需要 8 分钟。

Java 继承

  • 继承是子类继承父类的特征和行为,使得子类对象具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为
  • 类的继承格式

    class 父类 {  }  class 子类 extends 父类 {  }
  • 继承的特性
  1. 子类拥有父类的非private的属性,方法
  2. 子类可以拥有自己的属性和方法,即子类可以对父类进行扩展
  3. 子类可以用自己的方式实现父类的方法
  4. Java的继承是单继承,但是可以多重继承,单继承就是子类只能继承一个父类,多重继承就是,A继承B,B继承C
  5. 提高了类之间的耦合性

    继承关键字

  • extends关键字,类的继承是单一继承,一个子类只能拥有一个父类,所以extends只能继承一个类

    public class Animal {      private String name;      private int id;      public Animal(String myName, String myId) {      // 初始化属性      }      public void eat() { // 吃东西方法的具体实现}      public void sleep() { //睡觉方法的具体实现}  }  public class Penguin extends Animal{  }
  • implements关键字,使用inplements关键字可以变相的使Java具有多继承的特性,使用范围为类继承接口的情况,可以同时继承多个接口(接口间用逗号分隔)

    public interface A {      public void eat();      public void sleep();  }  public interface B {      public void show();  }  public class C implements A,B {  }
  • superthis关键字

    super关键字:通过super关键字实现对父类成员的访问,用来引用当前对象的父类
    this关键字:指向自己的引用

    public class SuperDemo {      public static void main(String []args) {          new SubClass().showMessage();      }  }  class SuperClass {      int i = 50;  }  class SuperClass extends SuperClass {      int i = 100;      public void showMessage {          System.out.printf("super.i = %d,this.i = %d\n", super.i, this.i);      }  }
  • final关键字,把类定义为不能继承的,即最终类;修饰方法,该方法不能被子类重写

    //声明类  final class 类名 {//类体}  //声明方法  修饰符(public/private/default/protected) final 返回值类型 方法名() {//方法体}  //实例变量也可以被定义为`final`,被定义为`final`的变量不能被修改。被声明为`final`类的方法自动地声明为`final`,但实例变量并不是`final`

    构造器

  • 子类不能继承父类的构造器,但是父类的构造器带有参数的,则必须在子类的构造器中显示的通过super关键字调用父类的构造器并配以适当的参数列表
  • 如果父类有无参构造器,则在子类的构造器中用super调用父类构造器不是必须的,如果没有使用super关键字,系统会自动调用父类的无参构造器

    class SuperClass {      private int n;      SuperClass() {          System.out.println("SuperClass()");      }      SuperClass(int n) {          System.out.println("SuperClass(int n)");          this.n = n;      }  }  class SubClass extends SuperClass{      private int n;      SubClass() {          super(300);// super语句必须是子类构造方法的第一条语句          System.out.println("SubClass");      }      public SubClass(int n) {          System.out.println("SubClass(int n):" + n);          this.n = n;      }  }  public class TestSuperSub {      public static void main (String args[]) {          SubClass sc = new SubClass();          SubClass sc2 = new SubClass(200);      }  }  // SuperClass(int n)  // SubClass  // SuperClass()  // SubClass(int n):200

    *java 中若要在子类中调用父类的方法,需使用关键字super

    class Animal{      void go() {          System.out.println("animal go");      }  }  class Dog extends Animal{      void go() {      // 调用父类方法      super.go();      }  }  //驱动函数  public static void main(String [] args) {      Dog dog = new Dog();      dog.go;  }

转载于:https://www.cnblogs.com/yfife/p/7401554.html

你可能感兴趣的文章
base64 json
查看>>
在vim中搜索单词
查看>>
设置定点数学属性
查看>>
自动化测试工具 Test Studio入门教程
查看>>
Python之进程线程
查看>>
排序算法(一) —— 冒泡排序
查看>>
No.026:Remove Duplicates from Sorted Array
查看>>
SpringBoot项目的几种创建方式,启动、和访问
查看>>
窗外【1】
查看>>
解决"disabled". Expected Boolean, got Number with value 0
查看>>
Android 四大组件之Service
查看>>
OC--init,initialize,initWithCoder:,initWithFrame:各方法的区别和加载顺序
查看>>
xml.dom.minidom
查看>>
Exponentiation
查看>>
本地jar上传到本地仓库
查看>>
7.14T3
查看>>
四则运算C++带Qt界面版本,吾王镇楼。。。。。
查看>>
各种获取时间的方法包含各类时间格式
查看>>
安卓7.0手机拍照闪退问题解决
查看>>
黑马程序员------IO(一)
查看>>