可以将父类的功能延续下去
为什么需要有继承:解决多个类有重复代码的问题
class 子类 extends 父类 { }
子类:也叫派生类
父类:本质上是java中成为超类
范例:继承的基本使用
class person{ private String name; private int age; public void setName(String name){ this.name = name; } public void setAge(int age){ this.age = age; } public String getName(){ return this.name; } public int getAge(){ return this.age; } } class student extends Person{ //student 是子类 //不定义任何属性 } public class TestDemo{ public static void main(String args[]){ Student stu = new Student(); stu.setName("张三"); stu.setAge(20); System.out.println("姓名" + stu.getName() + "年龄" + stu.getAge()); } }
继承的使用限制:
一:Java不允许多重继承:一个子类只能继承一个父类。(C++允许)
但是允许多层继承。
class A{}
class B extends A{}
class C extends B{} // C继承了A和B,但是开发中不要超过三层
二:子类继承父类后会将父类中全部结构继承下来,但是私有操作属于隐式继承,而所有的非私有操作属于显式继承。
class A{
private String Name;
public void setName(String name){
this.name = name;
}
public String getName(){
return this.name;
}
}
class B extends A {
public class TestJava{
public static void main(String args[]){
B b = new B();
b.setName(“张三”);
System.out.println(b.getName());
}
}
}
现在对于子类B是由name属性的,但是不能直接访问:
class B extends A{
public void print(){
System.out.println(name); //此时name属于隐式继承,所有的setter属于显式继承,此句无法操作
}
}
三:在实例化对象时会默认调用子类的无参构造方法,但在执行子类构造前回会先自动实例化父类构造,为父类的对象实例化,也就是说父类对象永远早于子类对象的实例化
如果非要为子类加上一个调用父类构造的标记,可以使用:super()
class A{
public A(){
System.out.println("111111111111");
}
}
class B{
public B(){
super(); //表示由子类构造调用父类构造 加与不加都一样。调用无参父类构造没有意义,一般是父类没有提供无参构造是使用
System.out.println("222222");
}
}