package com.fea.test.init;
public class Father_variable {
public static String static_var="Father_static_var";
public String public_var="Father_public_var";
String friendly_var="Father_friendly_var";
private String private_var="Father_private_var";
public String getPrivate_var() {
return private_var;
}
public void public_method() {
System.out.println("Father_public_method");
}
private void private_mehod(){
System.out.println("Father_private_mehod");
}
protected void protect_method(){
System.out.println(friendly_var);
System.out.println("Father_protect_method");
}
public void dp(){
private_mehod();
}
}
子类:
package com.fea.test.init;
public class Child_variable extends Father_variable{
public static String static_var="Child_static_var";
public String public_var="Child_public_var";
String friendly_var="Child_friendly_var";
private String private_var="Child_private_var";
public String getPrivate_var() {
return private_var;
}
public void public_method() {
System.out.println("Child_public_method");
}
private void private_mehod(){
System.out.println("Child_private_mehod");
}
protected void protect_method(){
System.out.println("Child_protect_method");
}
public void dp(){
System.out.println(public_var);
}
public static void main(String[] args) {
Father_variable cv= new Child_variable();
System.out.println(cv.public_var);
System.out.println(cv.static_var);
cv.dp();
cv.protect_method();
cv.public_method();
/**
*
属性是按类型(句柄)去访问的,方法是按对象访问的
*这里提出的覆盖并不是传统意义的覆盖,只是父类的属性或者方法隐藏了而已,隐藏的程度与关键字public,protect,private有关
*如果要调用父类的属性或者方法,可以用super.
1. 由于private变量受访问权限的限制,它不能被覆盖。
2. 属性的值取父类还是子类并不取决于我们创建对象的类型,而是取决于我们定义的变量的类型。
3. friendly、protected和public修饰符并不影响属性的覆盖。
4. 静态变量和静态常量属于类,不属于对象,因此它们不能被覆盖。
5. 常量可以被覆盖。
6. 对于基本类型和对象,它们适用同样的覆盖规律。
7.在方法中访问属性时,访问的是该对象的属性,如果该对象没有该属性,访问的则是父类对象的属性
*/
}
}
分享到:
相关推荐
在 C# 中,父类(也称为基类或超类)是定义了一组属性和方法的类,而子类(也称为派生类)是从父类继承并可能添加更多特性的类。通过继承,子类可以重用父类的代码,同时扩展其功能。 当需要将父类的对象赋值给子类...
3. **变量隐藏**:如果子类和父类有同名的实例变量,子类变量会“隐藏”父类变量。通过父类引用访问这些变量时,实际访问的是父类的变量,而非子类的。 4. **类型转换**:虽然父类引用可以指向子类对象,但反过来...
java 静态_非静态 字段_方法_代码块 子类父类构造_初始化顺序! 三个class 让你清清楚楚 第一个class java代码如下: package initialOrder; class Parent { // 静态变量 public static String p_StaticField...
如果一个类继承一个父类,那么子类会拥有父类所规定的所以成员 子类还可以拥有父类没有的独有成员 父类可以完成的任务,子类对象也可以完成 子类可以调用父类Person p= new ...//说明不可以调用子类的方法,还是父类
在Java中,子类可以通过以下方式重写父类的属性和方法: - **数据成员的重写**:当子类定义了一个与父类同名的数据成员时,子类成员将隐藏父类成员,即在子类中默认情况下无法直接访问父类成员。 - **方法的重写**...
尽管我们使用 `Shape` 类的引用变量来指向 `Circle` 和 `Rectangle` 对象,但在调用 `area()` 方法时,实际上执行的是子类中重写的方法。这正是多态性的体现,即通过父类引用可以操作子类对象,并且能够自动调用子类...
在 Java 中,使用 `extends` 关键字可以实现继承关系,子类可以继承父类的属性和方法,并可以重写父类的方法。使用 `super` 关键字可以引用父类的成分,访问父类中定义的属性和方法。 在 Java 中,可以使用多态性来...
在面向对象编程语言中,子类继承自父类时会自动拥有父类的所有非私有成员(包括属性和方法)。这意味着子类可以被视为是父类的一种特殊形式,即“子类是一种特殊的父类”。因此,可以通过父类的引用变量来操作子类...
在Python编程中,继承是面向对象编程的一个重要概念,它允许我们创建一个子类(派生类),这个子类可以继承父类(基类)的所有属性和方法。在这个"圣诞树代码编程python-23-子类重写父类同名属性和方法"的主题中,...
### Java反射操作父类所有属性和方法 #### 一、引言 在Java编程语言中,反射(Reflection)是一项强大的特性,它允许程序在运行时动态地获取类的信息,并能够直接操作这些信息。通过反射,我们可以获取类的字段、...
Java编程关于子类重写父类方法问题的理解 Java编程中,子类重写父类方法是非常重要...子类重写父类方法是Java编程中非常重要的概念之一,我们需要了解子类重写父类方法的规则和机制,以便更好地理解和应用Java编程。
在某些情况下,我们需要在子类中调用父类的实现方法,以保持代码的连贯性和一致性。本篇将详细讲解C#中子类如何调用父类的实现方法。 首先,我们来看一下通过子类无参构造函数创建子类实例的情况。例如,有一个父类...
这意味着,我们可以将父类对象赋值给子类引用变量,然后使用子类引用变量访问子类中的方法和变量。例如,在上面的代码中,我们使用了 `People` 类作为父类,然后创建了一个 `Chinese` 类作为子类。我们可以使用 `...
变量和方法覆盖和隐藏的不同:一个类的实例无法通过使用全局名或者强制自己转换为父类型,以访问父类中被隐藏的方法,然而强制转换子类为父类型之后,可以访问父类中被隐藏的变量。另外静态方法不能覆盖父类的实例...
通过继承,一个类(称为子类)可以从另一个类(称为父类或基类)继承属性和方法。继承不仅可以提高代码的复用性,还可以帮助开发者构建出更加灵活和可扩展的程序结构。在继承的过程中,构造函数的使用尤为重要。构造...
而方法隐藏则意味着子类定义了一个与父类同名但签名不同的方法,或者定义了一个与父类同名的变量,这导致父类中的同名方法或变量不再直接可用。 具体到Java语言,方法覆盖(即方法重写)有一些限制: 1. 子类中的...
程序中描述了子类对象构建调用父类的构造方法,以及类变量和实例变量创建的不同过程
它允许子类从父类中继承属性和方法,从而实现代码的重用和扩展。本文将深入探讨在继承中的程序执行顺序,以及子类与父类的执行顺序问题。 首先,我们需要了解Java或Python等面向对象语言中类的构造过程。当一个类...
子类可以覆盖父类的变量和方法,但是这需要遵守一定的规则和规范,否则可能会出现意想不到的错误。同时,静态变量和静态方法的应用也需要注意,它们可以提高程序的性能,但是也需要避免滥用。 变量和方法是Java语言...