继承是面向对象的核心特征之一,是由已有类创建新类的机制。利用继承机制,可以先创建一个具有共性的一般类,然后根据该一般类创建具有特殊性的新类,新类继承一般类的属性和方法,并根据需要增加自己的新属性和方法。类的继承机制是面向对象程序设计中实现软件可重用性的重要手段。

由已有类定义新类,已有类称为父类或超类,新类称为子类或派生类。通过继承机制,子类拥有父类所有的成员变量和成员方法,子类中既可以定义新的属性和方法,也可以对父类中的成员变量和成员方法进行改进,使类的功能得以扩充。

1.继承的实现

①、子类的声明,eg:

public class Dog extendsAnimal{private String color; //新加的属性

privateString kinds;public voidsleep(String color, String kinds){

System.out.println("颜色为:" + color + ",种类为:"+ kinds + "的狗正在睡觉!!!" ); //新加的方法

}

}

如上面所示:Dog类继承Animal类,那么Animal即为父类,Dog类即为子类,Dog类也将拥有父类Animal的所有成员变量和方法。

②、继承的原则

Java语言中继承机制的原则如下:

A:Java是单继承的,一个类只能继承一个父类。

B:子类继承父类的实例变量和类变量(静态变量)。

C:子类继承父类除构造方法以外的实例成员和类方法(静态方法)。

D:子类不能继承父类的构造方法,因为父类的构造方法用来创建父类对象,子类需要声明自己的构造方法,用来创建自己的对象。

E:子类可以重新声明父类的成员。

③、子类对父类成员的访问权限

子类虽然继承了父类的成员变量和成员方法,但并不是对父类所有的成员变量和成员方法都具有访问权限,即并不是在自己声明的方法中都能够访问父类的所有成员变量或成员方法。Java中子类访问父类成员的权限如下:

A:子类对父类的private成员没有访问权限。子类方法中不能直接引用父类的private成员变量,不能直接调用父类的private方法,但可以通过父类非private成员方法访问父类的成员变量。

B:子类对父类的public和protected成员具有访问权限。

C:子类对父类的默认权限成员的访问权限分为两种情况:对于同一个包中的父类默认权限成员具有访问权限,对其他包中父类的默认权限成员没有访问权限。

类中成员的访问权限体现了类封装的信息隐藏原则,如果类中成员仅限于该类使用,则声明为private;如果类中成员允许子类使用,则声明为protected;如果类中成员允许所有类访问,则声明为public。

根据一个案例来理解继承,eg:

packageextendsExample;/***

*@authorJackW

**/

public classAnimal {//私有属性

privateString type;privateString breed;privateString name;//构造方法

publicAnimal(String type, String breed, String name) {super();this.type =type;this.breed =breed;this.name =name;

}//自我介绍方法

public voidintroduce(){

System.out.println("主人好,我是" + this.type +",我的品种是" + this.breed + ",我的名字叫:" + this.name);

}//叫声方法

public voidsound(){

}

}

packageextendsExample;/***

*@authorJackW

**/

public class Cat extendsAnimal{//子类构造函数

publicCat(String breed, String name){//调用父类构造函数

super("猫", breed, name);

}

}

packageextendsExample;/***

*@authorJackW

**/

public class Dog extendsAnimal{//子类构造函数

publicDog(String breed, String name){//调用父类构造函数

super("狗", breed, name);

}

}

packageextendsExample;/***

*@authorJackW

**/

public classPetShop {public static voidmain(String[] args) {//TODO Auto-generated method stub

Cat cat = new Cat("波斯猫", "花花"); //定义猫对象cat

Dog dog = new Dog("金毛", "芋头"); //定义狗对象dog

cat.introduce();//猫调用自我介绍方法

dog.introduce(); //狗调用自我介绍方法

}

}

从上面的代码可以看出,Animal为父类,Cat类和Dog类为子类,父类中定义所有子类公共的属性和方法,不需要每个子类都再次的写一遍。

说明:

A:main()方法中的猫类对象cat和狗类对象dog都可以调用introduce()方法,但是Cat类和Dog类都未定义introduce()方法,这是因为Cat类和Dog类从父类Animal类中继承introduce()方法。

B:super 是Java的关键字,表示调用父类成员;this也是Java的关键字,表示调用当前类的成员。

④、super 和 this 引用

子类可以使用super关键字引用父类的成员变量,成员方法及构造方法。

A:引用父类成员变量

eg:super.成员变量名;

当子类中没有申明与父类同名的成员变量时,引用父类的成员变量可以不使用super 关键字;但当子类中声明了与父类同名的成员变量时,为类引用父类的成员变量,必须使用super 关键字,否则引用的是子类中同名的成员变量。

B:调用父类成员方法

子类自动继承父类所有的成员方法,可以使用以下方式调用父类的成员方法:

eg:super.成员方法(参数列表);

当子类中没有声明与父类同名且参数列表也相同的成员方法时,调用父类的成员方法可以不使用super 关键字;当子类中声明了与父类同名且参数列表也相同的成员方法时,为了调用父类的成员方法,必须使用super 关键字,否则调用的是子类中同名且参数列表也相同的方法。

C:调用父类的构造方法

在子类构造方法中,可以通过super 关键字调用父类构造方法,其调用形式如下:

eg:super(参数列表);

此处的参数列表由父类方法的参数列表决定,并且super()必须是子类构造方法体中的首条语句。

⑤、继承中的构造函数调用次序

实例化子类对象时,先调用子类构造函数,在调用父类构造函数。父类构造函数对属性进行初始化后,子类再对子类属性进行初始化。

⑥、继承中的实例化

实例化子类对象时,先实例化父类对象,后实例化子类对象,也就是说,实例化子类对象时,父类对象也被实例化了。

2.Object 类

在Java中,java.lang.Object 类是所有类的父类,当一个类没有使用 extends 关键字显式继承其他类时,该类默认继承 Object 类,因此所有类都是 Object 类的子类,都具有 Object 类的方法和属性。

Java中introduce方法_Java基础—继承相关推荐

  1. java中clone方法_Java Object clone()方法– Java中的克隆

    java中clone方法 Cloning is the process of creating a copy of an Object. Java Object class comes with na ...

  2. java中collection方法_Java 8中的Collector toCollection()方法

    toCollection()Java中的Collector类的方法返回一个Collector,该Collector以遇到的顺序将输入元素累积到一个新的Collection中. 语法如下static & ...

  3. 5 java中的集合类_java基础(5)-集合类1

    集合的由来 数组是很常用的一种数据结构,但假如我们遇到以下这样的的问题: 容器长度不确定 能自动排序 存储以键值对方式的数据 如果遇到这样的情况,数组就比较难满足了,所以也就有了一种与数组类似的数据结 ...

  4. 圆的周长在java中怎么表示_Java基础之计算圆的周长

    最简单的程序 圆形的周长公式: C=πd=2πr π是圆周率,约等于3.14,公式中r为圆的半径,d为圆的直径 在数学领域,称之为公式,在计算机领域,习惯称之为算法. 算法描述的是,如果要解决一个问题 ...

  5. java中plus方法_Java中的LocalDate plus()方法

    可以使用plus()Java中LocalDate类中的方法获取添加了所需持续时间的LocalDate的不可变副本.此方法需要两个参数,即要添加的持续时间和持续时间的TemporalUnit.此外,它还 ...

  6. java中boolean方法_java中boolean类型怎么用?

    boolean类型的用法是java中的布尔型[逻辑型]数据类型,在java中boolean值只能是true和false,而不能用0和1代替,并且一定要小写,代码为[var myBoolean = ne ...

  7. java中原生方法_java中原生(native)函数的用法

    1.原生(Native)函数的概念 在Java程序中,可以使用由其他编程语言实现的函数,这种函数,在Java中被称之为 原生(Native)函数. 2.在Java程序中使用原生函数的优缺点 1)优点 ...

  8. java中字符串常量_Java基础-Java中字符串常量详解

    --------第一个例子--------- String str1 = "a"; String str2= "b"; String str3= "a ...

  9. java中getchars方法_Java getChars() 方法

    getChars() 方法将字符从字符串复制到目标字符数组. 语法 public void getChars(int srcBegin, int srcEnd, char[] dst, int dst ...

最新文章

  1. c#数据结构———二叉查找树
  2. 利用 PortableBasemapServer 发布地图服务
  3. 738. 单调递增的数字(贪心算法)
  4. GitHub Universe 2021|MS Reactor 邀你共聚年度盛会
  5. 机器人教育发展_得于人工智能发展,机器人教育低龄化越来越普及
  6. 前端学习(1):HTML和CSS导学
  7. Ruby中的字符串与符号
  8. response 设置头的类型 (转)
  9. udp java 检测连接_java创建udp连接 java udp怎样测试是否连接
  10. DoEvents 方法使用小结
  11. Java Emitter Template
  12. C - Make Good(构造,思维)
  13. Redis核心技术笔记——Redis主从、主从从、切片集群
  14. 荣耀30青春版怎么样?到手后远超预期!
  15. 3D 人体姿态估计简述【转】
  16. 2022款华为MateBook 14和华硕无畏15哪个好
  17. 数据库系统原理(一)引言
  18. 文件系统区别ntfs ext fat、mbr guid
  19. 常用的webservice接口 .
  20. 基于Linux2.6内核的嵌入式手持设备开机LOGO修改

热门文章

  1. 基于物理渲染的基础理论
  2. PC顶级后次世代和主流次世代图像引擎技术规格表
  3. Linux开启和关闭防火墙的方法
  4. MySql-流程函数
  5. Queue.ArrayBlockQueue
  6. Java设计模式(九)责任链模式 命令模式
  7. 设计模式总结(Java)—— 单例模式
  8. AFNetworking请求提示Invalid parameter not satisfying: URLString
  9. 关于配置两台无线路由器
  10. Registering Protocol Handlers for Your Web Applications