Java继承

一、继承的概念

  1、继承是Java三大特性之一,是Java面对对象变成技术的一块基石,让java语言可以创建分等级层次的类。

  2、子类可以继承父类的特征和行为,使子类具有和父类相同的行为和特征。

  3、继承需要符合is-a的关系,父类更通用,子类更具体。

二、继承优缺点

  优点:实现代码共享,提高代码复用性、维护性。

  缺点:继承是强耦合关系,父类变化子类必须也要变化,而且对父类的封装也是一种破坏,父类所有的实现细节对于子类来说是透明的。

三、继承的特性

  1、子类只能继承父类非private的属性和方法。

  2、子类可以拥有自己的属性和方法,既子类可以对父类进行扩展。

  3、Java继承是单继承,一个子类只能继承一个类,但是可以多重继承,例如A类继承B类,B类继承C类。

  4、继承提高了类之间的耦合性。

  5、子类可以重写父类方法。

四、继承关键词

  extends:Java继承使用extends关键词实现继承,如果类没有继承其它类则Java语言会默认继承java.lang.Object类(所有类都继承java.lang.Object)。

  implements:使用implements可以同时实现多个接口(接口和接口之间用逗号隔开),所以我们可以通过实现接口来变相使Java具有多继承的特性。

  this:指向自己的引用。

  super:通过super关键词可以实现对父类成员的访问。

  final:final关键词修饰方法,方法不能被重写;修饰类则类为最终类,不能被继承,该类的方法也自动声明为final(实例变量不是final)。

五、构造函数

  1、子类不能继承父类构造函数

  2、子类在实例化时会默认调用父类无参构造函数。

  3、如果父类不存在默认构造函数,则子类必须使用super关键词对父类构造函数显示调用。

六、例子

 1 package com.example.demo.entity;
 2 
 3 class Person{
 4     protected String name;
 5     private int age;
 6 
 7     public Person() {
 8         System.out.println("构建Person中...........");
 9     }
10 
11     public Person(String name, int age) {
12         this.name = name;
13         this.age = age;
14         System.out.println("构建含值Person中...........");
15     }
16 
17     public String getName() {
18         return name;
19     }
20 
21     public void setName(String name) {
22         this.name = name;
23     }
24 
25     public int getAge() {
26         return age;
27     }
28 
29     public void setAge(int age) {
30         this.age = age;
31     }
32 
33     public void personDo(){
34         System.out.println("name:"+name+" age:"+age);
35         System.out.println("人做事情...........");
36     }
37 }
38 
39 class Girl extends Person{
40     private String girl;
41 
42     public Girl() {
43         super("小花",15);
44         System.out.println("构建Girl中...........");
45     }
46 
47     public String getGirl() {
48         return girl;
49     }
50 
51     public void setGirl(String girl) {
52         this.girl = girl;
53     }
54 
55     public void girlDo(){
56         System.out.println("女孩做事情...........");
57     }
58 }
59 
60 class Boy extends Person{
61     private String boy;
62 
63     public Boy(){
64         System.out.println("构建Boy中...........");
65     }
66 
67     public String getBoy() {
68         return boy;
69     }
70 
71     public void setBoy(String boy) {
72         this.boy = boy;
73     }
74 
75     public void boyDo(){
76         System.out.println("男孩做事情...........");
77     }
78 }
79 
80 public class testClass {
81     public static void main(String[] args) {
82         Person person=new Person();
83         Girl girl=new Girl();
84         Boy boy=new Boy();
85         girl.personDo();
86         boy.boyDo();
87     }
88 }
示例代码

输出结果为:

构建Person中...........
构建含值Person中...........
构建Girl中...........
构建Person中...........
构建Boy中...........
name:小花 age:15
人做事情...........
男孩做事情...........

参考文章:

http://www.runoob.com/java/java-inheritance.html

https://www.cnblogs.com/chenssy/p/3354884.html

 

 

 

posted @ 2018-07-27 13:18  凉秋  阅读(237)  评论(0)    收藏  举报