类的继承总结
一:使用继承的原因和作用:
原因: 一个父类就拥有了其子类的所以属性和方法,假如要用子类方法时,我们就 可以直接从父类那里继承过来,而不需要在重新去写子类的属性和方法了,但是要记住子类还可以拥有其父类没有的方法和属性,
例如。学生和大学生。学生是一个父类,那么作为子类大学生,那么他将必有一个属于自己特有的方法。
作用:1,使用继承的时候,可以提高代码的重用性
子类可以直接运用父类中的方法,不用重新去写。
2,使用继承可以提高程序的扩展性
由于子类可以有自己独特的方法,所以在用很多子类的时候,每个子类可以用到自己独特的方法。这样也就使得程序具有扩展性。
二:继承的格式
首先,继承有一个关键字extends,用来识别继承。其格式如下:
Public class 子类名 extends 父类名{
}
在括号里面可以添加属于子类拥有的特殊方法
三:子类继承到父类的哪些属性和方法
子类可以继承到父类的几乎一切方法,除了构造方法不能意外。
例如,定义一个子类UNStudent和一个父类Student
//定义一个父类,Student类
Public class Student{
//设置属性的
Private String name;
//定义一个构造方法
Public student(String name){
This.name=name;
}
}
//定义一个子类UNStudent类
Public class UNStudent{
//设置属性
Private String name;
//重新构造子类的构造方法
Public UNStudent(String name){
//this 是表示当前类,下面的this是表示的UNStudent
This.name=name;
}
}
从这个例子中我们可以看见。父类中的构造方法没有继承到子类。换个解读想,要是继承了,那么两个类的姓名不是一样了么。由此我们知道。构造方法子类还是得自己重新写
2、访问修饰符(private,protected,默认的,public)决定了子类是否能使用父类中的属性和方法。
1) 子类和父类在同一个包下
只有父类中private属性和private方法不能被子类或子类的对象调用。
父类中protected,默认的,public方法都可以被子类或子类的对象调用。
2) 子类和父类不在同一个包下
父类中默认的和private属性和方法不能被子类或子类的对象调用。
父类中protected属性和方法能被子类调用,但不能被子类的对象调用
父类中public属性和方法都可以被子类或子类的对象调用。
四、 方法重写:
1、 为什么要方法重写?
生活中的例子:
老师是一个类,都拥有教书的行为,但是不同专业的老师所教的课程是不一样的。这样就需要方法重写了
2、 方法重写的条件
重写后的方法的方法名、返回值、参数类型、参数个数、参数顺序必须和父类的方法一致
3、 子类方法重写的访问修饰符必须小于或等于父类方法的访问修饰符。
如果父类中的方法的访问修饰符为protected的,在子类进行方法重写时,访问修饰符可以是protected或public。
4、 如果实现了方法重写,那么子类的对象优先调用的是子类中的方法。
5、 子类可以定义自己的属性和方法。
五、 对象的自动转型
1、实现对象的自动转型的条件:存在继承关系。
2、格式:
父类名 对象名 = new 子类构造方法();
自动转型存在的问题,对象不能引用子类自己定义的方法
自动转型后,对象不能引用子类自己定义的方法,是由于java机制引起的
5、自动转型的作用:提高代码的重用性。
通过自动转型,可以示例化不同子类的对象,自动转型后,这些对象都是父类类型的,这样,就可以把父类类型的一个变量作为参数,把不同子类的对象传给一个方法,从而避免了写多个不同参数类型(不同子类类型)的方法,提高了代码的重用性。
六、 多态
多态是JAVA的方法重载、继承、方法重写、自动转型等技术的组合。多态方法调用允许一种类型表现出与其他相似类型之间的区别,只要它们都是从同一父类导出来的。
/**
* 定义一个父类,
*/
public class Hanxin {
/**
* 定义父类的属性
*/
private String name;
private int blood;
/**
* 设置一个姓名属性的方法
*/
public void setName(String name){
this.name=name;
}
/**
* 定义一个获取姓名属性的方法
*/
public String getName(){
return name;
}
/**
* 定义一个设置属性姓名的方反法
*/
public void setBlood(int bl){
this.blood=bl;
}
public int getBlood(){
return blood;
}
/**
* 定义战斗方法
*/
public void fight(Hanxin Ha){
Ha.blood--;
System.out.println(name+"攻击了"+Ha.getName()+","+Ha.getName()+"血量减少一"+"+Ha.getName()+剩余血量是"+Ha.getBlood());
}
}
/**
* 定义一个子类
*/
/**
* 继承父类的属性和方法
*/
public class Xiangyu extends Hanxin {
/**
* 重写一个大韩信战斗方法
*/
public void fight(Hanxin Ha){
Ha.setBlood(Ha.getBlood()-10);
System.out.println(getName()+"攻击了"+Ha.getName()+","+Ha.getName()+"剩余血量是"+Ha.getBlood());
}
}
/**
* 定义一个子类
*/
public class Xiaohe extends Hanxin{
/**
* 子类方法的重写
*/
public void fight(Hanxin Ha){
Ha.setBlood(Ha.getBlood()-15);
System.out.println(getName()+"攻击了"+Ha.getName()+","+"剩余血量是"+Ha.getName()+Ha.getBlood());
}
}
/**
* 定义一个Test类
*
*/
public class Test {
/**
* 程序的入口主函数
*/
public static void main(String[] args) {
//实例化一个对象的属性、
Xiangyu Xi=new Xiangyu();
Xiaohe XIa=new Xiaohe();
//设置一个对象的属性方法
Xi.setName("项羽");
XIa.setName("萧何");
//设置一个对象属性的方法
Xi.setBlood(30);
XIa.setBlood(20);
//判断方法进行的条件
while(XIa.getBlood()>0 && Xi.getBlood()>0){
//调用XIa的战斗方法
XIa.fight(Xi);
//判断胜利的条件
if(Xi.getBlood()<=0){
System.out.println(XIa.getName()+"胜利了");
break;
}
//调用Xi的战斗方法
Xi.fight(XIa);
if(XIa.getBlood()<=0){
System.out.println(Xi.getName()+"胜利了");

- 大小: 12.3 KB
分享到:
相关推荐
封装继承多态总结
继承是面向对象编程(OOP)的一个核心概念,它使得我们可以定义一个类继承另一个类的字段和方法。这样做的好处是可以减少代码冗余,提高代码复用性。在Java中,继承通过`extends`关键字实现。Java中的继承支持单继承,...
这个文档总结概括了继承和抽象类的相关知识以及需要注意的事项
总结来说,这个实验报告通过实际编程练习,帮助我们巩固了Java中抽象类和抽象方法的定义,以及类的继承和多态性这两个核心概念。通过设计和实现学生管理类,我们可以更深入地理解这些概念在实际问题解决中的应用。
总结来说,"表面积和体积_抽象类Shape_shape类继承_"的主题展示了如何利用C++的面向对象特性来设计和实现一个计算几何形状表面积和体积的程序。通过抽象类`Shape`定义通用接口,然后由具体的形状类(如`Cube`、`...
本文将深入探讨类继承的实现、作用以及相关的Java特性。 1. 类继承的实现和作用: 类继承通过使用关键字`extends`来实现。例如,`class ChildClass extends ParentClass`表明ChildClass是ParentClass的子类。继承...
总结来说,Hibernate 3.2在处理类继承时提供了丰富的策略,开发人员可以根据具体需求选择合适的方式。理解和掌握这些策略有助于构建高效、可维护的ORM模型。通过`@Inheritance`注解和相应的配置,我们可以实现对象和...
在编程世界中,类与继承是面向对象编程(OOP)的核心概念,它们构成了许多现代编程语言的基础。本文将深入探讨这两个概念,并结合实际应用场景,帮助你更好地理解它们。 首先,我们来谈谈“类”。在OOP中,类可以...
c++继承与派生总结 面向对象的程序设计中提供了类的继承机制,允许...以原有的类为基础产生新的类,我们就说新类继承了原有类的特征,也就是说从原有类派生了新类。 类的派生机制的好处在于:代码的重用和可扩充性。
抽象类是一种不能被实例化的类,它用于定义共同接口,供其他类继承。在C#中,我们使用`abstract`关键字声明抽象类。例如,我们可能有一个`Animal`抽象类,其中包含一个抽象方法`MakeSound()`: ```csharp public ...
"Java继承总结" Java中的继承是面向对象三大特性之一,在知识点上存在许多重要的细节。下面将对Java继承的基本概念、语法格式、继承关系、方法重写、自动转型等进行详细的总结和分析。 一、继承的基本概念 继承是...
C++继承与派生类是面向对象编程的重要概念,它们允许我们创建新的类,这些类可以从现有的类(称为基类或父类)继承属性和行为。在这个实验中,我们将深入理解这两个概念,并通过实际编程练习来巩固它们。 一、继承...
本篇文章将详细介绍C#中的类继承,包括如何实现继承、构造函数在继承中的作用、以及重载、重写和隐藏的概念。 #### 二、实现继承 在C#中,实现类的继承非常简单。只需在定义子类时,在类名后面加上冒号 `:`,紧...
### C++类总结多态继承 #### 一、C++ 类的基本概念 1. **注意事项** - 在定义数据成员时不能直接给数据成员赋初值。这是因为类本身仅是一种类型,类中的数据成员并不实际占用内存空间。数据成员的初始化应该在...
实验报告可能会涵盖以下内容:实验目的(理解并掌握类的继承)、实验步骤(定义`Shape`和`Circle`类,实现相关方法)、实验结果(展示代码运行输出,如圆形面积的计算)以及实验总结(类继承的概念及其在实际编程中...
- 示例代码中,`Vehicle` 类的成员 `Maxspeed` 和 `Weight` 被 `Bicycle`、`Car` 和 `MotorCycle` 派生类继承,且能够通过派生类的 `Show` 方法进行访问。 3. 构造函数与析构函数的调用顺序: - 当创建派生类的...
7. 小结和最佳实践:总结继承的使用场景,提供关于何时以及如何使用继承的最佳实践。 通过学习这个视频教程,你将更好地理解C++继承的概念,并能熟练地在Qt开发中应用这些知识,创建出功能丰富、结构清晰的程序。
- 在C#中,我们使用`:`符号来表示一个类继承自另一个类。例如,如果`ChildClass`继承自`ParentClass`,代码会写作`public class ChildClass : ParentClass {}`。 - 子类继承父类后,将自动获得所有非私有(public...
在C++编程语言中,有时候我们可能需要创建一个类,使其不能被其他类继承,以保护类的结构和防止不合理的扩展。标题所提到的"不能继承的类",其目的是为了实现一种类的封闭性,确保其设计的意图不被误用。描述中提到...
这里 `Student` 类继承了 `Person` 类,添加了一个新的属性 `grade` 并重写了 `sayHello` 方法。当我们创建一个 `Student` 对象时,它不仅具有 `Person` 的所有属性和方法,还增加了自己的特性。 最后,我们谈谈...