package com.dingfei.j2ee.inheritance;
/**
* 成员变量:实例变量与静态变量与引用变量声明的类型进行绑定,属于静态绑定,编译时就做了绑定
* 实例方法:实例方法与引用变量实际引用的对象的方法进行绑定,属于动态绑定,由JVM运行时动态绑定
* 静态方法:静态方法与引用变量声明的类型进行绑定,属于静态绑定,编译时就做了绑定
*
* @author Jeffy Ding
*
*/
public class ExtendsTest {
/**
* @param args
*/
public static void main(String[] args) {
Base b = new Base();
Base bs = new Sub();
Sub s = new Sub();
/**
* Base的method方法没有被子类覆盖,子类重载的Base的method方法
* Base的amethod方法被子类覆盖,所以运行时显现为多态
* 成员变量与声明类型进行静态绑定
*/
b.method(bs);
b.method(b);
b.method(s);
b.amethod(); //静态方法静态绑定
bs.method(b);
bs.method(bs);
bs.method(s);
bs.amethod();
s.method(b);
s.method(bs);
s.method(s);
s.amethod(); //静态方法静态绑定
/**
* b and bs are both declared as Base, so both are static binding
* 打印父类的成员变量值
*/
System.out.println("Base.a: " + b.a);
System.out.println("Base.a: " + b.b);
System.out.println("Base.a: " + b.c);
System.out.println("Base.a: " + b.name);
System.out.println("Declared as Base.a: " + bs.a);
System.out.println("Declared as Base.a: " + bs.b);
System.out.println("Declared as Base.a: " + bs.c);
System.out.println("Declared as Base.a: " + bs.name);
/**
* s is declared as Sub, so is static binding
* 打印子类的成员变量值
*/
System.out.println(s.a);
System.out.println(s.b);
System.out.println(s.c);
}
}
class Base{
public String a = "Hello";
protected int b = 13;
double c = 5;
private int d = 8;
static String name = "Base name";
public void method(Base b){
System.out.println("Base Class");
}
public void amethod(){
System.out.println("Base amethod()");
}
}
class Sub extends Base{
public String a = "Hello-sub";
protected int b = 131;
double c = 51;
static String name = "Sub name";
/**
* 这个事重载不是覆盖
* 重载:相同的方法名不同的参数签名,返回类型可以不一样,修饰符可以不一样
* 覆盖:与父类具有相同的方法名、参数签名、返回类型
* @param s
*/
public void method(Sub s){
System.out.println("Sub Class");
}
/**
* 这个才是覆盖
* @param s
*/
/*public void method(Base b){
System.out.println("Sub Class");
}*/
/**
* overriding覆盖父类的amethod()
*/
public void amethod(){
System.out.println("Sub amethod()");
}
}
分享到:
相关推荐
在Java面向对象编程(OOP)中,继承(Inheritance)是实现代码重用和抽象化的重要机制。它允许一个类(子类)从另一个类(超类、基类、父类)继承特性,包括方法和字段。继承使得子类能够获取父类的功能,同时还能...
在`java_inheritance_and_polymorphism-master`这个项目中,可能包含了关于这些概念的实际代码示例和练习,你可以通过阅读和实践这些代码来深入理解Java中的继承和多态性。通过这些练习,你可以学习如何设计和使用...
### 继承(Inheritance) 在Java中,继承允许一个类(子类)获取另一个类(父类)的属性和方法,从而实现代码的复用。这是面向对象设计的关键原则之一,有助于创建层次化的类结构。通过使用`extends`关键字,子类...
《继承在Java编程中的应用与理解》 继承是面向对象编程中的核心概念之一,它允许开发者从已有的类(父类或超类)派生出新的类(子类或派生类),以此来实现代码的复用和扩展。在Java编程语言中,继承通过关键字`...
在Java编程语言中,接口(Interface)和继承(Inheritance)是面向对象设计的重要特性,它们为代码提供了灵活性、可扩展性和复用性。本文将深入探讨这两个概念以及它们在实际开发中的应用。 首先,我们来看一下接口...
接下来是**继承(Inheritance)**,它是面向对象编程的一个基石,一个类可以继承另一个类的属性和方法,从而实现代码的复用和扩展。在Java中,一个类只能直接继承一个父类,但可以通过多重继承(接口)来模拟多重...
四、继承(Inheritance) * 作用:通过继承可以实现非私有资源共享,代码复用 * 语法规则: + 两个对象之间要符合 is-a 关系(是一个) + 定义继承时要使用 extends 关键字 + 在继承关系中,要符合先有父再有子...
在Java编程语言中,继承是面向对象编程的一个核心特性,它允许一个类(子类或派生类)从另一个类(父类或基类)继承属性和行为。这个概念是第7章“Java继承”中重点讲解的内容。通过继承,我们可以创建具有共同特性...
继承(Inheritance)是面向对象编程的一个核心特性,它允许一个类(子类或派生类)继承另一个类(父类或基类)的属性和方法。通过继承,子类可以重用父类的代码,减少重复编码的工作量。 #### 如何实现继承 在Java...
在Java面向对象编程(OOP)中,**继承**(Inheritance)是一种强大的机制,它允许一个类(子类或派生类)继承另一个类(父类或基类)的属性和方法。这种机制可以有效地复用代码,并且支持类之间的层次结构。 #### 二、...
Java作为支持面向对象特性的主要语言之一,提供了封装(Encapsulation)、继承(Inheritance)、多态(Polymorphism)和抽象(Abstraction)等核心概念,以增强代码的可维护性、灵活性和安全性。 ### 封装:信息...
本篇将详细讲解Java中的继承(Inheritance)及其相关知识点。 一、继承的概念与优势 1. 类是对对象的抽象:在Java中,类是创建对象的模板,它封装了数据(属性)和行为(方法)。例如,手机类可以抽象出荣耀20、...
在Java编程中,继承是面向对象编程的一个核心概念,它允许一个类(子类)继承另一个类(父类)的属性和方法。这里的主题聚焦于Java中的线程(Thread)类的继承,通过这种方式来创建自定义线程。下面将详细讨论Java继承...
### 继承(Inheritance) 继承是一种使一个类能够继承另一个类的特性的机制。子类可以继承父类的所有属性和方法,除了构造方法和final修饰的方法。继承的主要目的是为了代码复用和提高代码的可扩展性。例如: ```...
**继承(Inheritance)** 继承允许一个类(子类)继承另一个类(父类)的属性和方法,从而实现代码的重用和扩展。在Java中,我们使用`extends`关键字来表示继承关系。例如,如果我们有一个`Employee`类作为父类,...
在这个"inheritance-in-java:Java继承的完美实践代码"中,我们将深入探讨Java继承的概念、优势以及如何在实践中运用。 1. 继承的概念 在Java中,继承是通过使用`extends`关键字来实现的。一个子类可以继承一个或多...
1. 继承(Inheritance) Java 语言中的继承是指一个类继承另一个类的所有成员变量和方法。子类继承父类的成员变量和方法,并可以添加新的成员变量和方法。继承的优点是可以重用代码,减少代码冗余。 在 Java 中,...
在C++、Java、Python等支持OOP的语言中,继承是一个关键的组成部分。 【描述】"用C语言编写的遗传算法程序包,无需解压密码"表明这是一个实现了遗传算法的C语言项目,且压缩文件无需密码即可访问。遗传算法是一种...
- **保护继承(Protected Inheritance)**: 保护继承类似于私有继承,但派生类可以访问基类的保护成员。这提供了一种介于公有和私有之间的继承方式。 3. **访问控制** - **公有继承** 下,子类成员可以访问基类的...
继承(Inheritance) 继承是指子类继承父类的成员变量和方法。子类可以继承父类的方法,并可以对其进行重写。 例如,在上面的例子中,`Triangle` 和 `Rectangle` 类都继承自 `Shape` 类,它们继承了 `Shape` 类的...