`

《Java 程序设计》— 继承与多态

阅读更多

对象替换原则:

      父类的句柄能够指向父类的对象,也能够指向子类的对象。

例如:

public class A502 
{
	public static void main(String[] args)
	{
		Chinaman you = new Chinaman();
		you.say();
		Chinaman me = new Wuhanman();
		me.say();
	}
}

 

 

super与this:

        关键字super指向父类对象;关键字this指向当前类对象本身。(它们是实例成员变量,不能用于静态方法之中)

1、在对象创建时使用super和this

    1)如果父类的构造器重载了,通过super指定调用哪个父类构造器。

    2)如果子类自己的构造器重载了,通过this在一个构造器里调用另一个构造器。

(super/this() 语句调用必须是构造器的第一个语句)

public class A 
{
	private String s = new String("null");
	A()
	{
		System.out.print("A");
	}
	A(int a)
	{
		System.out.print("AAAAA");
	}
	A(String str)
	{
		this(2);
		this.s = str;//若去掉,结果s为null
		System.out.println(s);
	}
	
	public static void main(String[] args)
	{
		new A("Hello");
	}
}

 2、在变量的隐藏时使用super和this

    1)子类的成员变量隐藏父类的成员变量

    2)类的局部变量隐藏类的成员变量

    (局部变量不能被隐藏)

 例如:( 如果想访问父类被隐藏的成员变量i,用super.i表示。成员变量被局部变量所隐藏时,用this.i访问它。)

class F
{
	int i = 100;
	void isF(int i)
	{
		System.out.print("F"+i+"");
	}
}
public class A extends F 
{
	int i = 10; //成员变量,隐藏了父类的成员变量i
	void isA(int i)  //形参变量,隐藏了自己的成员变量i
	{
		System.out.println("i is:"+i);  //i=实际参数
		System.out.println("i of A:"+this.i); //i=10
		System.out.println("i of F:"+super.i); //i=100
	}
	public static void main(String[] args)
	{
		A a = new A();
		int i = 1;
		System.out.println(i+" ");
		a.isA(i);  //i=1
		System.out.print(a.i+" "); //子类的对象调用成员变量
	}
}

3、在消息传递中使用super和this(super主要用于方法改写中)

 

方法的继承与改写:

       改写(overriding):在子类中对父类的方法进行重新定义,改写是继承性和多态性的核心机制。

1)子类不继承父类的private方法;如果子类与父类不在同一个包,则不继承父类的包访问级别的方法。

2)子类可以添加自己的新方法,但子类对象的引用赋值给父类句柄后,不能用父类句柄访问子类的新方法。

(构造方法不是类的成员,则父类的构造方法不能被子类继承)

      注意改写与重载的区别。

方法改写要求:

1)返回值类型必须相同。

2)父类的方法不是final方法。

3)改写方法不要求与父类方法的访问修饰符相同,但不能改写的更加私有。若父类为private,改写方法可以用protected和pulic修饰;若父类为public,改写方法只能用public修饰。

4)改写方法不能产生比父类方法更多的异常。

    (静态方法不能被改写,只能被隐藏。)

   (private方法不被继承,static方法只能被隐藏,final方法禁止改写。)

例如:(可以通过类名和super访问父类被隐藏的类方法)

class F
{
	static void fun()
	{
		System.out.println("F的类方法");
	}
}
class S extends F
{
	static void fun() //是隐藏
	{
		F.fun();  //类名访问被隐藏的类方法
		System.out.println("Son 的类方法");
	}
	void inst()  //实例方法
	{
		super.fun();  //只能用于实例方法中
		System.out.println("Son的实例方法");
	}
}
public class A
{
	public static void main(String[] args)
	{
		F f = new S();
		f.fun();
		(new S()).fun();
		(new S()).inst();
	}
}

 说明:父类的类方法只能被子类的类方法隐藏,不能用实例方法隐藏。父类的实例方法只能被子类的实例方法改写,不能用类方法去改写父类的实例方法。(类方法即static静态方法,实例方法即非static修饰的方法)

分享到:
评论

相关推荐

    Educoder题目:Java面向对象 - 封装、继承和多态答案解析.md

    Educoder题目:Java面向对象 - 封装、继承和多态答案解析

    java封装 继承与多态

    java封装 继承与多态 程序设计 类与对象

    详解java接口、继承和多态

    ### 详解Java接口、继承和多态 #### 一、Java接口 在Java中,接口是一种定义行为的方式,它提供了一种实现抽象方法的手段。通过接口,开发人员可以为类定义一组方法签名,但不提供这些方法的具体实现。这有助于...

    Java程序设计:第8章 继承和多态.ppt

    Java程序设计:第8章 继承和多态.ppt

    java中继承与多态的题目

    Java 中继承与多态的题目 本资源摘要信息是关于 Java 中继承和多态的题目,涵盖了面向对象编程的基本概念和继承机制的应用。 继承的概念 继承是面向对象编程的一种机制,允许一个类(子类)继承另一个类(父类)...

    Java语言程序设计ppt第十一章(继承和多态)

    Java语言程序设计ppt第十一章(继承和多态) 本章节主要讲解Java语言中的继承和多态机制,包括继承的定义、继承的应用、多态性和动态绑定等知识点。 一、继承的定义 继承是一种机制,允许一个类继承另一个类的...

    Java程序设计基础教程(共10单元)单元4 继承和多态.pdf

    Java程序设计基础教程(共10单元)单元4 继承和多态.pdfJava程序设计基础教程(共10单元)单元4 继承和多态.pdfJava程序设计基础教程(共10单元)单元4 继承和多态.pdfJava程序设计基础教程(共10单元)单元4 继承和多态.pdf...

    Java实验报告——类的继承、多态的应用

    在本实验报告中,我们将深入探讨Java编程中的两个核心概念:类的继承和多态的应用。实验主要目标是加深对抽象类和抽象方法的理解,并掌握如何在实际编码中实现类的继承以及多态性。 首先,让我们理解抽象类和抽象...

    JAVA封装继承与多态PPT教案学习.pptx

    JAVA 封装继承与多态是面向对象程序设计语言中三个重要的概念,本文将对这三个概念进行详细的解释。 一、封装 封装是指隐藏对象的内部细节,使对象外部不能随意存取对象的内部数据的过程。JAVA 中,对象就是一个...

    西南科技大学Java程序设计与实践 实验三 类的继承与多态的应用

    《西南科技大学Java程序设计与实践——实验三:类的继承与多态的应用》 本次实验主要目的是深化理解和应用Java中的类的继承与多态特性,同时结合图形用户界面设计进行实战训练。实验内容分为三个部分,旨在通过具体...

    《java面向对象程序设计-继承和多态》教案.doc

    总结来说,Java的面向对象设计包括封装、继承和多态,这些特性使得代码更加模块化、可维护和可扩展。访问修饰符和方法修饰符提供了细粒度的控制,确保代码的质量和安全性。接口作为多态的重要工具,弥补了Java单一...

    java继承、多态的简单程序.zip

    这个压缩包"java继承、多态的简单程序.zip"显然包含了一些示例代码,旨在帮助初学者理解这两个概念。接下来,我们将深入探讨Java中的继承和多态性。 ### 继承(Inheritance) 在Java中,继承允许一个类(子类)...

    Java语言程序设计:第四章 继承与多态.ppt

    在第四章“继承与多态”中,我们深入探讨了这两个主题。 首先,继承允许一个类(子类)从另一个类(父类)继承特性,这样子类就可以重用父类的方法和属性,而无需重新编写。例如,在提供的内容中,`Employee`类被...

    Java程序设计课件:第四章 继承与多态.ppt

    Java 程序设计课件:第四章 继承与多态 在 Java 中,继承是实现代码重用的一个重要机制。继承可以使子类继承父类的成员变量和方法,从而实现代码的重用和简化。继承的基本知识包括使用 extends 关键字实现类间的...

    java中的继承与多态

    在Java编程语言中,继承和多态是面向对象编程的核心概念。它们允许代码复用、扩展功能以及实现灵活的设计。 1. **继承**: 继承是Java中类之间的一种关系,其中一个类(子类)可以从另一个类(父类)继承属性和...

    java课件06Java的继承与多态.ppt

    Java中的继承和多态是面向对象程序设计的两个重要特性。继承是一种由已有的类创建新类的机制,通过继承,可以先创建一个公有属性的一般类,然后根据一般类再创建一个具有特殊属性的新类。新类继承一般类的状态和行为...

    Java 语言程序设计:第5章接口多态.ppt

    Java 语言程序设计第 5 章接口多态 本章主要讲解 Java 语言程序设计中接口和多态的概念、语法和应用。接口是 Java 语言中的一种抽象机制,它提供了一种定义类之间的“协议”的方式,允许类之间实现多继承,同时免除...

    Java 学习课件,继承和多态

    - **继承与多态是Java面向对象编程的核心概念**。正确理解并运用这些概念可以帮助开发者写出更高质量、更易于维护的代码。 - **注意**:虽然继承和多态非常有用,但在实际项目中应当适度使用,过度依赖继承可能会...

Global site tag (gtag.js) - Google Analytics