继承是指我有多个类,而且这些类都有相同的属性和方法的时候就可以使用继承关系
java提供了一个关键字用来表示继承关系:extends
写法:class B extends A{} 表示B类继承自A类
这里的B称之为:子类,派生类
这里的A称之为:父类,基类或者超类
子类只能继承父类的成员变量和成员方法,并且不是私有的,如下
class Animal{String name;int age;public void eat(){System.out.println("吃饭");}public void sleep(){System.out.println("睡觉");}
}class Dog extends Animal {//子类相当于这里有一份父类中的非私有成员public void lookDoor(){System.out.println("看家");}
}class Cat extends Animal{}public class ExtendsDemo1{public static void main(String[] args) {Dog dog = new Dog();dog.eat();dog.sleep();System.out.println(dog.name);System.out.println(dog.age);}
}
类与类之间继承只能有一个直接父类,但是可以进行多重继承,形成继承体系
class Mother{}class GrandFather{}class Father extends GrandFather{}class Son extends Father{}//这样是不行的
//class Son extends Mother,Father{
//
//}public class ExtendsDemo2 {public static void main(String[] args) {}
}
子类方法查找变量的规则符合就近原则:
1.会先在自己的方法中进行查找,如果找到就直接使用
2.如果自己的方法中找不到,就去当前类的成员变量中找
3.如果当前的成员变量也没有,就去父类中的成员变量中去找
class Fu2{int a = 10;
}class Son2 extends Fu2{int a = 20;public void fun1(){int a = 30;System.out.println(a); // 30System.out.println(this.a); // 20
// Fu2 fu2 = new Fu2();
// System.out.println(fu2.a);System.out.println(super.a); // 10}
}public class ExtendsDemo4 {public static void main(String[] args) {Son2 son2 = new Son2();son2.fun1();}
}