服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服务器之家 - 编程语言 - JAVA教程 - java教程之java继承示例详解

java教程之java继承示例详解

2019-11-17 14:19java教程网 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

复制代码代码如下:

/* super的用法
 * 输出结果:
 * super.i = 10, this.i = 20
 */
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\n", super.i, this.i);
    }   
}

 

对从父类继承过来的方法进行重写(Override)

1. 当子类中出现与父类一模一样的方法(返回值, 函数名, 形参)时, 会出现重写(Override)操作.

OverrideDemo1.java

复制代码代码如下:

/* 怎么对从父类继承过来的方法进行重写(Override)
 * 输出结果:
 * SuperClass: I am good~
 * SubClass: I am excellent~~~
 */
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

复制代码代码如下:

/* 子类中不允许出现与父类同名同参但是不同返回类型的方法 
 * 出错信息:
 * OverrideDemo.java:20: error: f() in SubClass cannot override f() in SuperClass
 *  public int f() {
 *                 ^
 *                   return type int is not compatible with void
 *                   OverrideDemo.java:19: error: method does not override or implement a method from a supertype
 *                      @Override
 *                          ^
 *                          2 errors
 */
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

 

复制代码代码如下:

/* 子类重写父类的方法的访问权限要大于或者等于父类方法的访问权限
 * 出错信息:
 * OverrideDemo.java:18: error: f() in SubClass cannot override f() in SuperClass
 *  protected void f() {
 *                     ^
 *                       attempting to assign weaker access privileges; was public
 *                       1 error
 */

 

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 文件解压缩实现代码,有需要的朋友可以参考一下 ...

    java代码网1742019-10-25
  • JAVA教程java清除html转义字符

    java清除html转义字符

    这篇文章主要介绍了一个静态文件处理的一些便捷服务,包括 java清除html转义字符,清除html代码,从style样式中读取CSS的属性,将字符串截取指定长度,涉...

    java开发网2042019-11-01
  • JAVA教程封装jndi操作ldap服务器的工具类

    封装jndi操作ldap服务器的工具类

    这篇文章主要介绍了封装JNDI操作LDAP服务器的工具类,使用者只需要会使用List,Map 数据结构,大家参考使用吧 ...

    java教程网4022019-11-04
  • JAVA教程java操作mongodb示例分享

    java操作mongodb示例分享

    这篇文章主要介绍了java操作mongodb示例,实现了简单的条件查询和复杂的条件查询,需要的朋友可以参考下 ...

    java教程网3212019-11-11
  • JAVA教程java多线程编程之线程的生命周期

    java多线程编程之线程的生命周期

    线程要经历开始(等待)、运行、挂起和停止四种不同的状态。这四种状态都可以通过Thread类中的方法进行控制。下面给出了Thread类中和这四种状态相关的...

    java教程网1882019-11-04
  • JAVA教程解决dubbo错误ip及ip乱入问题的方法

    解决dubbo错误ip及ip乱入问题的方法

    今天小编就为大家分享一篇关于解决dubbo错误ip及ip乱入问题的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随...

    双斜杠少年5212019-06-24
  • JAVA教程java字符串拼接与性能分析详解

    java字符串拼接与性能分析详解

    在JAVA中拼接两个字符串的最简便的方式就是使用操作符”+”。如果你用”+”来连接固定长度的字符串,可能性能上会稍受影响,但是如果你是在循环中来...

    java技术网2132019-10-27
  • JAVA教程java实现文本文件删除空行的示例分享

    java实现文本文件删除空行的示例分享

    这篇文章主要介绍了java实现文本文件删除空行的示例,需要的朋友可以参考下 ...

    java教程网2352019-11-17