asp音乐网站开发教程,企业宣传ppt的方案模板,菜鸟必读 网站被入侵后需做的检测 1,wordpress 数据库查询插件继承的概述
生活中的继承 财产继承#xff1a; 绿化#xff1a;前人栽树#xff0c;后人乘凉 “绿水青山#xff0c;就是金山银山” 样貌#xff1a; 继承之外#xff0c;是不是还可以进化#xff1a; 继承有延续#xff08;下一代延续上一代的基因、财… 继承的概述
生活中的继承 财产继承 绿化前人栽树后人乘凉 “绿水青山就是金山银山” 样貌 继承之外是不是还可以进化 继承有延续下一代延续上一代的基因、财富、扩展下一代和上一代又有所不同的意思。 Java中的继承
角度一从上而下
为描述和处理个人信息定义类Person 为描述和处理学生信息定义类Student 通过继承简化Student类的定义 说明Student类继承了父类Person的所有属性和方法并增加了一个属性school。Person中的属性和方法Student都可以使用。
角度二从下而上 多个类中存在相同属性和行为时将这些内容抽取到单独一个类中那么多个类中无需再定义这些属性和行为只需要和抽取出来的类构成继承关系。如图所示 再举例 继承的好处 继承的出现减少了代码冗余提高了代码的复用性。 继承的出现更有利于功能的扩展。 继承的出现让类与类之间产生了is-a的关系为多态的使用提供了前提。 继承描述事物之间的所属关系这种关系是is-a 的关系。可见父类更通用、更一般子类更具体。 注意不要仅为了获取其他类中某个功能而去继承 继承的语法
继承中的语法格式
通过 extends 关键字可以声明一个类B继承另外一个类A定义格式如下 [修饰符] class 类A { ... } [修饰符] class 类B extends 类A { ... } 继承中的基本概念
类B称为子类、派生类(derived class)、SubClass
类A称为父类、超类、基类(base class)、SuperClass 代码举例
1、父类 package com.atguigu.inherited.grammar; /* * 定义动物类Animal做为父类 */ public class Animal { // 定义name属性 String name; // 定义age属性 int age; // 定义动物的吃东西方法 public void eat() { System.out.println(age 岁的 name 在吃东西); } } 2、子类 package com.atguigu.inherited.grammar; /* * 定义猫类Cat 继承 动物类Animal */ public class Cat extends Animal { int count;//记录每只猫抓的老鼠数量 // 定义一个猫抓老鼠的方法catchMouse public void catchMouse() { count; System.out.println(抓老鼠已经抓了 count 只老鼠); } } 3、测试类 package com.atguigu.inherited.grammar; public class TestCat { public static void main(String[] args) { // 创建一个猫类对象 Cat cat new Cat(); // 为该猫类对象的name属性进行赋值 cat.name Tom; // 为该猫类对象的age属性进行赋值 cat.age 2; // 调用该猫继承来的eat()方法 cat.eat(); // 调用该猫的catchMouse()方法 cat.catchMouse(); cat.catchMouse(); cat.catchMouse(); } } 继承性的细节说明
子类会继承父类所有的实例变量和实例方法
从类的定义来看类是一类具有相同特性的事物的抽象描述。父类是所有子类共同特征的抽象描述。而实例变量和实例方法就是事物的特征那么父类中声明的实例变量和实例方法代表子类事物也有这个特征。 当子类对象被创建时在堆中给对象申请内存时就要看子类和父类都声明了什么实例变量这些实例变量都要分配内存。 当子类对象调用方法时编译器会先在子类模板中看该类是否有这个方法如果没找到会看它的父类甚至父类的父类是否声明了这个方法遵循从下往上找的顺序找到了就停止一直到根父类都没有找到就会报编译错误。
所以继承意味着子类的对象除了看子类的类模板还要看父类的类模板。 2、子类不能直接访问父类中私有的(private)的成员变量和方法
子类虽会继承父类私有(private)的成员变量但子类不能对继承的私有成员变量直接进行访问可通过继承的get/set方法进行访问。如图所示 3、在Java 中继承的关键字用的是“extends”即子类不是父类的子集而是对父类的“扩展”
子类在继承父类以后还可以定义自己特有的方法这就可以看做是对父类功能上的扩展。
4、Java支持多层继承(继承体系) class A{} class B extends A{} class C extends B{} 说明 子类和父类是一种相对的概念 顶层父类是Object类。所有的类默认继承Object作为父类。
5、一个父类可以同时拥有多个子类 class A{} class B extends A{} class D extends A{} class E extends A{} 6、Java只支持单继承不支持多重继承 public class A{} class B extends A{} //一个类只能有一个父类不可以有多个直接父类。 class C extends B{} //ok class C extends A,B... //error 练习
练习1定义一个学生类Student它继承自Person类 练习2
(1)定义一个ManKind类包括 成员变量int sex和int salary 方法void manOrWoman()根据sex的值显示“man”(sex1)或者“woman”(sex0) 方法void employeed()根据salary的值显示“no job”(salary0)或者“ job”(salary!0)。
(2)定义类Kids继承ManKind并包括 成员变量int yearsOld 方法printAge()打印yearsOld的值。
(3)定义类KidsTest在类的main方法中实例化Kids的对象someKid用该对象访问其父类的成员变量及方法。
练习3根据下图实现类。在CylinderTest类中创建Cylinder类的对象设置圆柱的底面半径和高并输出圆柱的体积。