Java学习笔记(4):继承

  • 格式: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

this和super的应用

  • 每一个子类构造方法时,第一个语句默认为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("喵喵喵");
    }
}

猜你喜欢

转载自blog.csdn.net/qq_51677496/article/details/113053305
今日推荐