Java中的继承
1.子类会继承父类的非private修饰的成员变量和方法
先看代码1:
package liu.shen.test;
public class Client {
public static void main(String [] args){
People stu = new Student();
stu.age = 20;
System.out.println(stu.age);
}
}
package liu.shen.test;
public abstract class People {
}
package liu.shen.test;
public class Student extends People{
int age,height;
}
为什么会是错误的代码呢?
原因如下:
(1)我们在Client类中使用的是People stu = new Student();这个语句来新建一个People类的对象!即使后面的语句是new Student(),并且Student类中有int age,heigth这个属性。但是People类中并没有age,height这两个属性,所以显示错误。
(2)修改如下:
将People stu = new Student();改成Student stu = new Student();或者是把Student类中的成员变量移动到类People中,即可。
再看代码2:
abstract class Animal{ public String species="Animal";//种类 public void run(){ System.out.println("I'm running"); } }
package grammer; public class Dog extends Animal { public static void main(String[] args) { Dog dog = new Dog(); System.out.println("The value in superClass is: "+dog.species); dog.species = "dog";//the fields in superClass could be access System.out.println("The value in subClass is: "+dog.species); dog.run(); } }
运行结果如下:
The value in superClass is: Animal
The value in subClass is: dog
I'm running