继承是类与类之间的关系,是一个很简单很直观的概念,与现实世界中的继承(例如儿子继承父亲财产)类似。
继承可以理解为一个类从另一个类获取方法和属性的过程。如果类B继承类A(B extends A),那么B就拥有A的属性和方法。
继承使用extends关键字
class Person{
String name="zhoumo";
int age=27;
public void say() {
System.out.println("我的名字叫"+name+",今年"+age+"岁");
}
}
Person类有name和age属性,还有say方法
class Student extends Person{
int height=175;
int weight=130;
public void againSay(){
System.out.println("我的名字叫"+name+"。今年"+age+"岁,身高"+height+"体重"+weight);
}
}
Student 类继承了Person类,那么父类中的非private属性就可以被子类所用,所以子类中虽然没有再次定义name和age属性,但依然可以使用name和age。
public class ZhouMo {
public static void main(String[] args) {
Student st = new Student();
st.againSay();
st.say();
}
}
运行结果为:
我的名字叫zhoumo。今年27岁,身高175体重130
我的名字叫zhoumo,今年27岁
扩展一下
class Wine{
public void fun1() {
System.out.println("Wine 的Fun...");
fun2();
}
public void fun2() {
System.out.println("Wine 的Fun2..");
}
}
class JNC extends Wine{
public void fun1(String a) {
System.out.println("JNC的Fun1...");
fun2();
}
public void fun2() {
System.out.println("JNC 的Fun2...");
}
}
public class DuoTai {
public static void main(String[] args) {
Wine a = new JNC();
// a.fun1("a");
a.fun1();
}
}
打印结果为:
Wine 的Fun...
JNC 的Fun2...
如果把调用a.fun1()改成a.fun1("a");会报错,原因是这样的,子变父,子类覆写父类的方法,则保留子类的方法,子类有的方法父类没有,则去掉子类的方法,
Wine a = new JNC();
则a拥有的方法有public void fun1(); JNC 的public void fun2();