Java三大特性之继承

原创 2016年05月19日 17:01:25

转载请标明出处:http://blog.csdn.net/wu_wxc/article/details/51455293
本文出自【吴孝城的CSDN博客】

extends:意思是扩展,但一般我们叫做继承。

继承可以定义为一个类获得另一个类的属性(方法和字段)

子类继承父类所有的成员(字段、方法、嵌套类),但不能使用父类private(私有)的方法和属性
构造方法不是成员,所以不会被继承,但可以被调用。
Java是单继承,但可以多实现(implements),一般继承基本类和抽象类用extends,实现接口用implements

extends的使用如下

class Super {
    .......
    .......
}

class Sub extends Super{
    .......
    .......
}

implements的使用如下

// 接口
interface People{
    .......
    .......
}
// 类
class Person {
    .......
    .......
}
// 实现People接口
class Student implements People{
    .......
    .......
}
// 继承Person并实现People
class Worker extends Person implements People{
    .......
    .......
}

extends关键字的使用

package cn.wuxiaocheng;

// 父类
class People {
    public void say() {
        System.out.println("父类");
    }
}

// 子类,通过extends扩展处父类(Calculation)
class Student extends People {
    public void tell() {
        System.out.println("子类");
    }
}

public class TestExtends {

    public static void main(String[] args) {
        Student student = new Student();
        // 调用父类扩方法
        student.say();
        // 调用子类的方法
        student.tell();
    }

}

运行结果如下
这里写图片描述

super关键字
如果子类中有和父类同名的成员,可以用它来区分。也是用来调用父类的构造方法的
如:

package cn.wuxiaocheng;

//父类
class Foo {
    int i = 10;

    public Foo() {
        System.out.println("Foo");
    }

}

// 子类
class Sub extends Foo {
    // 和父类同名的成员变量
    int i = 20;

    // 创建子类构造函数
    Sub() {
        // 调用父类无参数的构造方法,构造函数的调用必须是构造函数中的第一个语句
        super();
        // 用super调用和父类同名的成员变量
        System.out.println(super.i);
    }
}

public class SuperTest {

    public static void main(String[] args) {
        // 构造函数直接创建应会调用
        new Sub();
    }
}

结果如下
这里写图片描述

接口

接口通常以interface来声明,一个类通过实现接口,从而实现接口中的抽象方法
接口并不是类,类描述属性和方法,接口则包含类要实现的方法

要注意的是
接口没有构造方法
接口中所有的方法必须是抽象方法,没写abstract的话系统也会自动添加上
接口不能用于实例化对象

声明接口不需要使用abstract
接口中的每一个方法也都是隐式的,声明时同样不需要使用abstract关键字
接口中的方法都是public公有的
接口可以多实现,
接口中定义的变量都是常量,public static final修饰,如果没写,系统也会自动添加上

接口文件通常会在文件名前面加”I”,用来区分
IAnimal.java

package cn.wuxiaocheng;

//定义一个接口,省略abstract
public interface IAnimal {
    public void say();
}

Dog.java
package cn.wuxiaocheng;

// 用implements关键字实现IAnimal接口
public class Dog implements IAnimal {

    // 实现接口必须里面的方法
    @Override
    public void say() {
        System.out.println("狗叫是汪汪");
    }

}

Cat.java

package cn.wuxiaocheng;

//继承抽象类必须实现抽象类中的抽象方法
public class Cat implements IAnimal {

    @Override
    public void say() {
        System.out.println("猫叫是喵");
    }

}

Test.java

package cn.wuxiaocheng;

public class Test {

    public static void main(String[] args) {

        // 接口的引用指向一个实现了接口的对象
        IAnimal iAnimal1 = new Dog();
        iAnimal1.say();

        IAnimal iAnimal2 = new Cat();
        iAnimal2.say();
    }

}

这里写图片描述

版权声明:本文为博主原创文章,未经博主允许不得转载。

java提高篇(二)-----理解java的三大特性之继承

在《Think in java》中有这样一句话:复用代码是Java众多引人注目的功能之一。但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情。在这句话中最引人注...
  • chenssy
  • chenssy
  • 2013年10月16日 19:37
  • 20334

java提高篇(二)-----理解java的三大特性之继承

java提高篇(二)-----理解java的三大特性之继承 2013-10-16 19:37 13879人阅读 评论(14) 收藏 举报  分类: 【JAVA开发】-----Java提高篇...
  • evilcry2012
  • evilcry2012
  • 2017年05月05日 12:02
  • 355

C++学习笔记—OOP三大特性之继承

继承(inheritance)是面向对象设计(OOP)的三大特性之一。
  • quejing1992
  • quejing1992
  • 2016年05月05日 16:48
  • 661

Java三大特性总结

一、继承: 一个类继承另一个类,则继承的类为子类,被继承的类为父类。它的目的就是实现代码的复用。子类继承父类后就自动拥有了父类的属性和方法,但是,父类的私有属性和构造方法并不能被继承。另外,继承...
  • u011641865
  • u011641865
  • 2016年04月10日 23:12
  • 678

OC学习篇之---类的三大特性(封装,继承,多态)

之前的一片文章介绍了OC中类的初始化方法和点语法的使用:http://blog.csdn.net/jiangwei0910410003/article/details/41683873,今天来继续学习...
  • jiangwei0910410003
  • jiangwei0910410003
  • 2014年12月04日 22:20
  • 30889

Java三大特性的理解

本人刚入行,Java开发;对于Java中三大特性的理解,有自己的一些感悟,分享出来,和大家讨论下,请网友们给予批评和指正~ Java的三大特性--[封装],[继承],[多态] 在此之前,我觉得应该...
  • luxun2014
  • luxun2014
  • 2014年11月29日 02:22
  • 993

【面试题】Java三大特性封装继承多态总结

本文内容总结于多篇博客,参考到的地方在文中都会一一列出 http://www.cnblogs.com/ibalintha/p/3897821.html 1.封装 封装...
  • zjkC050818
  • zjkC050818
  • 2017年10月18日 22:15
  • 415

java面向对象的四大特性-多态,继承,抽象,封装

1.多态 面向对象的四大特性:封装、继承、多态、抽象。从一定角度来看,封装和继承几乎都是为多态而准备的。是最重要的知识点。多态的定义:指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对...
  • basycia
  • basycia
  • 2016年07月07日 12:54
  • 4015

Java编程:并发编程的3个特性

在并发编程中我们经常会遇到三个问题:原子性问题、可见性问题、有序性问题,下面为大家剖析一下这三个问题。如有不正之处,欢迎批评指正。1、原子性 原子行:即一个或者多个操作作为一个整体,要么全部执行,要...
  • claram
  • claram
  • 2016年06月15日 17:19
  • 4859

java提高篇(三)-----理解java的三大特性之多态

面向对象编程有三大特性:封装、继承、多态。        封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据。对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访...
  • chenssy
  • chenssy
  • 2013年10月16日 19:44
  • 57010
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java三大特性之继承
举报原因:
原因补充:

(最多只允许输入30个字)