继承

继承是面向对象三大特征之一,可以使得子类具有父类的属性和方法,还可以在子类中重新定义,以及追加属性和方法
继承的好处
提高了代码的复用性(多个类相同的成员可以收到同一个类中)
提高了代码的维护性(如果方法的代码需要修改,修改一处即可)
继承弊端
继承让类与类之间产生了关系,类的耦合性增强了,当父类发生变化时子类实现也不得不跟着变化,削弱了子类的独立性
继承中变量的访问特点
在子类方法中访问一个变量,采用的是就近原则。

  1. 子类局部范围找
  2. 子类成员范围找
  3. 父类成员范围找
  4. 如果都没有就报错(不考虑父亲的父亲…)

1.继承的特性
子类拥有父类非private的属性和方法;

子类可以拥有自己的属性和方法,即子类可以对父类进行扩展;

子类可以用自己的方式实现父类的方法;

在Java中只允许单继承,而不允许多重继承,也就是说一个子类只能有一个父类,但是Java中却允许多层继承,多层继承就是,例如类C继承类B,类B继承类A,所以按照关系就是类A是类B的父类,类B是类C的父类,这是Java继承区别于C++继承的一个特性;

提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系)。
2.java继承语句

class 父类 // 定义父类
{...
}
class 子类 extends 父类 // 用extends关键字实现类的继承
{...
}

3.实例

public class TestPersonStudentDemo {public static void main(String[] args) {Student s = new Student();// 访问Person类中的name属性s.name = "张三";// 访问Person类中的age属性s.age = 18;// 访问Student类中的school属性s.school = "哈佛大学";System.out.println("姓名:" + s.name + ",年龄:" + s.age + ",学校:" + s.school);}
}
class Person {String name;int age;
}
class Student extends Person {String school;
}

输出结果:

既然看懂了不如看一道来自educoder的练习题,增加一下知识,加深一下记忆
4.练习
编程要求
根据提示,在右侧编辑器Begin-End处补充代码:

声明一个Animal类,将属性name和age封装起来,提供对外的公共访问方法;

声明一个Cat类和Dog类,都继承Animal类,分别定义各自的voice方法和eat方法;

在main方法中分别实例化一个Cat对象和Dog对象,设置各自的属性并调用这两个方法,再打印出名字和年龄信息;

请看测试说明。

package case2;public class extendsTest {public static void main(String args[]) {// 实例化一个Cat对象,设置属性name和age,调用voice()和eat()方法,再打印出名字和年龄信息/********* begin *********/
Cat cat = new Cat();
cat.name = "大花猫";
cat.age = "6岁";
cat.voice();
cat.eat();
System.out.println(cat.name+cat.age);/********* end *********/// 实例化一个Dog对象,设置属性name和age,调用voice()和eat()方法,再打印出名字和年龄信息/********* begin *********/
Dog dog=new Dog();
dog.name = "大黑狗";
dog.age = "8岁";
dog.voice();
dog.eat();
System.out.println(dog.name+dog.age);/********* end *********/}
}class Animal {/********* begin *********/String name;
String age;/********* end *********/}class Cat extends Animal {// 定义Cat类的voice()和eat()方法/********* begin *********/
public void voice(){System.out.println(name+"喵喵叫");
}
public void eat(){System.out.println(name+"吃鱼");
} /********* end *********/
}class Dog extends Animal {// 定义Dog类的voice()和eat()方法/********* begin *********/
public void voice(){System.out.println(name+"汪汪叫");
}
public void eat(){System.out.println(name+"吃骨头");
}/********* end *********/
}

java继承详解加练习题相关推荐

  1. 「万字图文」史上最姨母级Java继承详解

    原创公众号:「bigsai」 除公众号以外拒绝任意擅自转载 文章收录在bigsai公众号和回车课堂 课程导学 在Java课堂中,所有老师不得不提到面向对象(Object Oriented),而在谈到面 ...

  2. Java 继承详解(extends)

    文章目录 继承概述 继承的设计规范.内存运行原理 继承的特点 继承后:成员变量.成员方法的访问 继承后:方法重写 继承后:子类构造器的特点 继承后:子类构造器访问父类有参构造器 this.super使 ...

  3. Oracle集合查询详解加练习题

    #集合查询 概念:将不同的数据集合(SQL查询语句)按照集合的规则,拼接一个临时的,新的数据集合(表) 1.集合:并集.交集.差集 并集 union all 语法:select column1,COL ...

  4. 接口与继承系列教材 (十)- Java 内部类详解

    接口与继承系列教材 (十)- Java 内部类详解 内部类分为四种: 非静态内部类 静态内部类 匿名类 本地类 步骤1:非静态内部类 步骤2:静态内部类 步骤3:匿名类 步骤4:本地类 步骤5:在匿名 ...

  5. 【职坐标】java面向对象三大特性(二)——继承详解

    [职坐标]java面向对象三大特性(二)--继承详解 a) 什么是继承? i. 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可 b) ...

  6. Java 多线程详解(三)------线程的同步

    Java 多线程详解(一)------概念的引入:https://blog.csdn.net/weixin_39816740/article/details/80089790 Java 多线程详解(二 ...

  7. Java集合详解6:TreeMap和红黑树

    <Java集合详解系列>是我在完成夯实Java基础篇的系列博客后准备开始写的新系列. 这些文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查 ...

  8. 【Java-Java集合】Java集合详解与区别

    [Java-Java集合]Java集合详解与区别 1)概述 2)集合框架图 2.1.总框架图 2.2.Iterable 框架图 2.3.Map 框架图 3)List 3.1.ArrayList 类继承 ...

  9. Java集合排序及java集合类详解

    Java集合排序及java集合类详解 (Collection, List, Set, Map) 摘要内容 集合是Java里面最常用的,也是最重要的一部分.能够用好集合和理解好集合对于做Java程序的开 ...

最新文章

  1. 纯干货-多场景下大屏可视化应用(文中含可视化源代码链接)
  2. linux新建用户代码,Linux_用dsadd添加用户的代码,描述: 此工具命令将一些具体 - phpStudy...
  3. 接oracle私活价格,也来记录一下第一次接私活的体验
  4. NodeJs同步、异步加载
  5. Angular移动工具集要让Web应用有原生的感觉
  6. 贝叶斯推断之最大后验概率(MAP)
  7. 偶遇 649453.sys / Adware.Cdn / Hacktool.Rootkit
  8. 解决非root用户没有权限运行docker命令的问题
  9. VMwarex虚拟机打不开:“指定的文件不是虚拟磁盘”
  10. 22.Consent 确认逻辑实现
  11. 中国石油大学远程教育《穿出你的职业感》
  12. 易语言 php post,易语言POST发送邮件
  13. 预测、迭代与优化:用AI探寻组合优化问题最优解
  14. 工信部:禁止外资参与网络出版 外国游戏国内要玩完
  15. jQuery延迟加载(懒加载)
  16. Lightroom中几个重要名词术语的解释_我是亲民_新浪博客
  17. 蓝鲸软件电池称重记录管理系统方案介绍
  18. 什么是Kappa架构?
  19. 限制对比度自适应直方图均衡化算法原理、实现及效果
  20. 仿百度壁纸客户端(三)——首页单向,双向事件冲突处理,壁纸列表的实现

热门文章

  1. C/C++中strlen(),strcpy(),strcat()以及strcmp()的代码实现--学习笔记
  2. Spring Boot配置文件学习记录【1】
  3. [导入]Nhibernate引入自定义Membership和Role
  4. 即将到来的金三银四,这10道springboot常见面试题你需要了解下
  5. leetcode-521-Longest Uncommon Subsequence I
  6. 《软件测试经验与教训》之二——测试内容先后顺序
  7. 转载非原创:修改BB 的内容,回车后修改CC 的值
  8. bash shell命令(2)
  9. http://hi.baidu.com/grayworm/blog/item/c76c4046307d380a6a63e56a.html
  10. [征询意见]北京.NET俱乐部11月份活动内容