java继承复习

package com.edison;

public class ExtendAct {

	/** 先给父类成员变量分配内存空间,然后初始化父类构造方法,接着给子类成员变量分配内存空间,最后初始化子类构造方法 */
	public static void main(String[] args) {
		A b = new B();
		/** 2.父类的引用不能调用子类的属性或方法 */
		System.out.println("姓名" + b.name);
		System.out.println("b.setName()=" + b.setName());
		// System.out.println
		// ("年龄"+b.age);/*这里得不到b的age属性,因为父类引用指向子类对象时,父类的引用不能调用子类的属性或方法*/
	}
}

class A {

	/** 3.初始化类之前要先给成员变量分配内存空间 */
	String name = setName();

	String setName() {
		System.out.println("给父类name属性赋值");
		return "Parent";
	}

	/** 1.父类的引用不能调用子类的属性或方法 */
	public A() {
		System.out.println("父类构造方法");
	}
}

class B extends A {
	int age = setAge();

	public B() {
		System.out.println("子类构造方法");
	}

	int setAge() {
		System.out.println("给age属性赋值");
		return 15;
	}

	String setName() {
		System.out.println("给子类name属性赋值");
		return "aaa";
	}
}

你可能感兴趣的:(java)