Java三大特性之继承
Posted 「已注销」
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java三大特性之继承相关的知识,希望对你有一定的参考价值。
转载请标明出处: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三大特性之继承的主要内容,如果未能解决你的问题,请参考以下文章