类的继承、方法重写、自动转型
1、类的继承
在类与对象的总结中说过,所谓类就好比生活中的种类,一些具有
相同特征的事物的总称。而类的继承就像是一个种类的事物的延伸
或说繁衍出来的子类,子类具有父类所具有的所有属性以及方法,也
就是在Java编程语言中所说的子类继承父类的所有属性和方法。继承
的关键字:extends。还需注意的是Java中的继承是单继承。比如现在
我们建一个学生类:
public class Student{ //设置学生的属性 public String name;//姓名 public int scro;//学分 public String subject; //设置学生的学习方法(构造方法) public Student(String name,int scro){ this.name=name; this.scro=scro; } public void setName(String name){ this.name=name; } public String getName(){ return name; } public void setScro(int scro){ this.scro=scro; } public int getScro(){ return scro; } public void setSubject(String subject){ this.subject=subject; } public String getSubject(){ return subject; } //学习的方法 public void study(){ System.out.println(name+"在学习,学分是"+scro); } }
接下来建一个大学生类,让他继承学生类:
public class UStudent extends Student{ //该类继承自学生类,所以学生类中的 //三个属性都已经具备 //可以给其添加一个科目属性 //构造方法 public UStudent(String name,int scro){ //调用父类的构造方法 super(name,scro);//super关键字是在子类中调用 //父类的方法 } //方法的重写:访问修饰符 返回值类型 方法名 参数类型 //个数顺序必须相同,但他们具体实现({}中的代码)不同 public void study(){ System.out.println(name+"正在学习"+subject+"学分是"+scro); } }
关于子类所能继承父类中的那些方法和属性与其所附带的
访问修饰符有关:
访问修饰符 类中 同包中 有继承关系不同包中 不同包
public 可以 可以 可以 可以
protected 可以 可以 可以 不可以
默认的 可以 可以 不可以 不可以
private 可以 不可以 不可以 不可以
不难发现,当访问修饰符为public时调用权限与路径无关。
自动转型
建一个执行类:
public class Text{ public static void main(String []args){ //自动转型:用父类声明一个对象名 用对象名指向子类对象。 Student stu=new UStudent("张三",2); //本质上是子类对象,只是当是父类对象使用 stu.setSubject("第二门外语"); stu.study(); } }
自动转型作用:把子类没有的而父类有的方法实现自动调用。调用时编译器会先在子类中寻找
是否有重写了的该方法,没有时才会调用父类中的方法。
梣梓
2014、09、26
相关推荐
5. 自动转型: Java支持向上转型,即子类对象可以被当作父类对象使用。这允许我们在父类引用中调用子类的方法和属性,增强了代码的灵活性。例如,`ParentClass obj = new ChildClass();` 6. 多态的实现: 多态是...
下面将对Java继承的基本概念、语法格式、继承关系、方法重写、自动转型等进行详细的总结和分析。 一、继承的基本概念 继承是特殊的is-a关系,即子类继承父类,说明子类是一种特殊的父类,并且具有父类所不具有的...
类的继承是面向对象编程的一个核心特性,它允许一个类(子类)继承另一个类(父类)的属性和方法,从而实现代码的复用和扩展。下面将详细探讨`extends`关键字在Java中的使用、特点以及相关知识点。 1. **类的继承...
- 多态是Java中的一大特性,由继承、方法重载、方法重写和自动转型共同作用产生。 - 多态使得可以使用父类引用操作子类对象,提供了更高的灵活性和代码扩展性。 6. **为什么需要继承**: - 提高代码的重用性:...
多态是指在程序运行期间能够自动判断引用变量实际所指向的对象类型,并根据实际情况调用相应的方法或执行相应的操作。 - **实现条件**: - 向上转型 - 继承关系 - 方法重写(Override) #### 示例: ```java /...
在案例中,我们创建了Animal类作为父类,Cat和Dog作为子类,它们都继承Animal并重写了eat()方法。在测试类AnimalDemo中,我们通过多态的方式实现了对猫和狗的处理: - 使用Animal类型的引用a指向Cat对象,调用eat()...
当子类继承父类并覆盖(Override)父类的某个方法时,这就是方法重写。子类对象在运行时可以选择调用自己的方法,而不是父类的方法,这就是多态性的一种体现。 **3. 接口实现** 接口是Java中实现多态的另一种方式...
实现多态性的步骤通常包括:继承、方法重写和向上转型。选项B提到的“接口继承”不是实现多态的步骤,接口可以包含抽象方法,这些方法在实现类中被重写以实现多态。 以上就是Java基础测试题中涉及的关键知识点的...
然而,许多类如String重写了equals()方法,以比较对象的值是否相等。例如: ```java String s1 = new String("abc"); String s2 = new String("abc"); System.out.println(s1 == s2); // 输出false,因为它们在...
文件中提到的`Person`类和继承自`Person`的`Student`类的`fun1()`方法便是此类情况。`Student`类重写了`fun1()`方法,而没有重写`fun2()`,这表示`Student`对象可以以不同的方式执行`fun1()`,而对`fun2()`的调用将...
2. **多态性**:向上转型使得可以通过父类引用调用子类重写的方法,实现了运行时的多态性。 3. **灵活性**:在不修改父类引用的情况下,可以灵活地替换不同子类的对象,从而改变程序的行为。 需要注意的是,虽然...
被`final`修饰的方法不能被子类重写。 #### 实例变量与静态变量 - **实例变量**:每个对象都有自己的实例变量副本,它们存储在对象的堆内存中。 - **静态变量**:所有对象共享同一份静态变量,它们存储在方法区中...
- `Child` 类继承了 `Father` 类,并重写了 `func2()` 方法。 - 当我们使用 `Father` 类型的引用 `child` 调用 `func1()` 时,实际上调用的是 `Father` 类中的 `func1()`,因为 `Child` 类中并没有重写该方法。 - 在...
向上转型是将子类对象赋值给父类引用的过程,是一种自动类型转换,此时可以调用父类中的方法,如果方法在子类中被重写了,那么会调用子类中的实现,这种机制被称为动态绑定。多态的实现减少了代码的冗余,提高了程序...
方法覆盖(也称方法重写)是在子类中重新定义父类的方法的行为,子类中的方法必须与父类中的方法具有相同的方法签名(包括返回类型、名称和参数列表)。当子类的对象调用这个方法时,执行的是子类中的方法,这是多态...
1. **方法覆盖**:当子类继承父类并重写父类中的方法时,通过父类引用调用该方法,将执行子类中的版本。这是多态性的一种体现。 2. **构造器与初始化**:子类对象在创建时会先调用父类的构造器,确保父类的状态得到...
1. **继承**:Java中的类可以继承自另一个类,子类会自动获得父类的所有非私有属性和方法。这是多态的基础,因为它允许我们定义一个通用的基类,以及多个具有特定功能的派生类。 2. **方法重写**(Override):子类...
多态性是Java中与继承相关的特性,当一个方法在父类中被子类重写时,不同类型的对象调用该方法可能会有不同的行为。这就是所谓的“同一操作作用于不同对象,可以有不同的解释,产生不同的结果”。 抽象类(用`...
本实验可能包括创建类的继承关系,定义抽象方法,实现方法重写,以及进行向上转型的实例。你可以通过编写不同的子类来测试多态性,观察编译时和运行时多态的表现,并理解其背后的机制。此外,还可以尝试利用多态性...