0
点赞
收藏
分享

微信扫一扫

java教程之java继承示例详解

什么是继承(extends)?
  继承是:新定义的类是从已有的类中获取属性和方法的现象。 这个已有的类叫做父类, 从这个父类获取属性和方法的类叫做子类。
  ExtendsDemo1.java
  复制代码 代码如下:
  public class ExtendsDemo1 {
  public static void main(String[] args) {
  Truck t=new Truck();
  t.size=100; //不建议这么写。初始化成员变量最好使用构造方法,或者提供set(), get()接口.
  //货车类的一个实例t从汽车类从继承了size, color属性。
  //而货车比汽车多一个货箱
  }
  }
  class Car { //汽车
  int size; //车体大小
  String color; //颜色
  }
  class Truck extends Car { //货车
  String packingBox; //货箱
  }
  继承的好处
  1. 提高了代码的重用性
  2. 让类和类之间产生了关系, 为多态创造了条件。
  继承(extends)的格式
  复制代码 代码如下:
  class SubClass extends SuperClass {
  //执行语句;
  }
  super关键字
  1. super关键字和this的用法相同
  2. this代表本类引用, super代表父类引用
  3. 当子类和父类出现同名成员的时候, 可以用super 和 this进行区分
  SuperDemo.java
  复制代码 代码如下:
  public class SuperDemo {
  public static void main(String[] args) {
  new SubClass().showMessage();
  }
  }
  class SuperClass {
  int i=10;
  }
  class SubClass extends SuperClass {
  int i=20;
  public void showMessage() {
  System.out.printf("super.i=%d, this.i=%d
  ", super.i, this.i);
  }
  }
  对从父类继承过来的方法进行重写(Override)
  1. 当子类中出现与父类一模一样的方法(返回值, 函数名, 形参)时, 会出现重写(Override)操作.
  OverrideDemo1.java
  复制代码 代码如下:
  public class OverrideDemo1 {
  public static void main(String[] args) {
  SubClass sc=new SubClass();
  sc.speak();
  }
  }
  class SuperClass {
  public void speak() {
  System.out.println("SuperClass: I am good~");
  }
  }
  class SubClass extends SuperClass {
  @Override //@Override表示下面出现的方法会出现重写操作,由编译器检查,如果达不到重写的条件,就会报错。一定程度上增加了代码的安全性
  和健壮性
  public void speak() {
  super.speak();
  System.out.println("SubClass: I am excellent~~~");
  }
  }
  2. 在对父类方法进行重写(Override)操作的时候,子类不允许出现与父类同名同参但是不同返回类型的方法.
  OverrideDemo2.java
  复制代码 代码如下:
  public class OverrideDemo2 {
  public static void main(String[] args) {
  }
  }
  class SuperClass {
  public void f() {
  }
  }
  class SubClass extends SuperClass {
  @Override
  public int f() {
  return 1;
  }
  }
  3. 子类重写父类的方法的访问权限要大于或者等于父类中被重写的方法
  OverrideDemo3.java
  复制代码 代码如下:
  public class OverrideDemo3 {
  public static void main(String[] args) {
  }
  }
  class SuperClass {
  public void f() {
  }
  }
  class SubClass extends SuperClass {
  @Override
  protected void f() { //把这里的访问权限改为public即可
  }
  }
  访问控制符
  访问控制符有:public, protected, default, private
  有些需要一点包(package)的知识,所以等到讲包的时候再说.
  您可能感兴趣的文章:java中重载,继承,重写和多态的区别JAVA中阻止类的继承(官方和非官方)java中子类继承父类,程序运行顺序的深入分析java实现多线程的两种方式继承Thread类和实现Runnable接口的方法浅谈Java 对于继承的初级理解Java封装、继承、多态三大特征的理解Java的Spring框架中bean的继承与内部bean的注入老生常谈 Java中的继承(必看)浅谈java继承中是否创建父类对象详解java为什么不允许类多重继承却允许接口多重继承

举报

相关推荐

0 条评论