- 格式:public class 子类名 extends 父类名(){}
- 父类也叫基类,超类
- 子类也叫派生类
- 继承中子类的特点:
子类可以有父类的内容也可以有自己的内容 - 什么时候用继承:
当有两个类A和B时,若A包括在B中,或者B包括在A中,则可以使用继承
this和super在继承中的使用
public class demo {
public static void main(String[] args) {
zi a = new zi();
a.show();
}
}
public class fu
{
int p = 10;
}
public class zi extends fu{
int p=20;
public void show()
{
int p=30;
System.out.println(p);
//使用this访问此类的p
System.out.println(this.p);
//使用super访问父类的p
System.out.println(super.p);
}
}
输出:
30
20
10
- 每一个子类构造方法时,第一个语句默认为super(),即调用父类的无参构造方法
- 若super(带参),则会调用父类的带参构造方法完成父类带参构造方法的初始化
- 方法重写:子类可定义与父类同名的方法,并对该方法进行重写或者改进
public class demo {
public static void main(String[] args) {
NewPhone np = new NewPhone();
np.call("ywq");
}
}
public class Phone {
public void call(String name)
{
System.out.println("给"+name+"打电话");
}
}
public class NewPhone extends Phone{
@Override//可以检验重写的方法是否跟父类一样
public void call(String name)
{
System.out.println("给"+name+"视频通话");
// System.out.println("给"+name+"打电话");
super.call(name);
}
}
- 重写方法的注意事项:父类中的私有方法,子类是没法重写的,但是你依旧可以定义重名的方法,只是不再是方法重写。
- java继承的注意事项:只能单继承,支持多层继承
例子:
public class Demo {
public static void main(String[] args) {
cat c = new cat(3,"加菲猫");
dog d = new dog(2,"zhuzhu");
System.out.println(c.getName()+","+c.getAge());
c.miao();
System.out.println(d.getName()+","+d.getAge());
d.wang();
}
}
public class animal {
private int age;
private String name;
public animal(){
}
public animal(int age, String name) {
this.age = age;
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class dog extends animal{
//无参构造
public dog()
{
}
//有参构造
public dog(int age,String name) {
super(age,name);
}
public void wang()
{
System.out.println("汪汪汪");
}
}
public class cat extends animal{
public cat(){
}
public cat(int age,String name)
{
super(age,name);
}
public void miao()
{
System.out.println("喵喵喵");
}
}