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

浙公网安备 33010602011771号