您的位置:首页 > 编程语言 > Java开发

Java—”继承“小知识点

2016-05-01 00:59 417 查看
public class test {

public static void main(String[] args) {
/*****①*****/
AClass classVar = new BClass();
//classVar.printVal();  不能调用子类的新增方法
//classVar.b = 4;  不能调用子类的新增成员
classVar.print(); //调用的是子类重写的函数 ***
System.out.println("a=" + classVar.a); //调用父类中的a ***

/*****②*****/
((BClass) classVar).printVal();
((BClass) classVar).print();
System.out.println("a=" + ((BClass) classVar).a); //子类中的a

/*****③*****/
AClass var = new AClass();
var.print();  //调用AClass的方法
}

}

class AClass {
int a = 1;

void print() {
System.out.println("AClass");
}
}

class BClass extends AClass{
int a = 2;
int b = 3;

void print() {
System.out.println("BClass");
}

void printVal() {
System.out.println("a=" + a);
}
}

①中父类声明的变量保存的是子类变量的引用。牢记,当其调用被子类重写的方法时,其调用的是子类的方法;当其调用与子类同名的成员时,其调用的仍是父类中的成员。

另一种抽象类的情况如下,相对上面来讲容易理解一些。

public class test {

public static void main(String[] args) {
/*****①*****/
AClass classVar = new BClass();
//classVar.printVal(); 不能调用子类的新增方法
//classVar.b = 4; 不能调用子类的新增成员
classVar.print(); //调用的是子类实现的函数
System.out.println("a=" + classVar.a); //调用父类中的a

/*****②*****/
((BClass) classVar).printVal();
((BClass) classVar).print();
System.out.println("a=" + ((BClass) classVar).a); //子类中的a
}

}

abstract class AClass {
int a = 1;

abstract void print();
}

class BClass extends AClass{
int a = 2;
int b = 3;

void print() {
System.out.println("BClass");
}

void printVal() {
System.out.println("a=" + a);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: