this和super关键字

this关键字:

1.引用成员变量

2.通过this(参数列表)调用类的重载的构造方法

3.返回对象的值:使用return this,来返回某个类的引用。

super关键字:

1.super是一个引用,在子类对象中对父类的引用,用于在子类的方法中调用父类已经被重写的方法

2.当父类的构造方法中有参时,子类的构造方法必须使用super(参数值); 对于父类无参的默认构造器,子类会使用默认的super();,可以不写出来

注:this()和super()之前不能写其他语句

Circle.class

public class Circle {
    protected double radius;    
    public Circle(double r) {
        radius=r;
    }
    public void setr(double radius){
        this.radius=radius;               //使用this关键字引用成员变量,前面的this.radius指成员变量
    }    
    public double getr(){
        return radius;
    }    
    public double getarea(){
        return 3.14*radius*radius;
    }
}

 Cylinder.class

 1 public class Cylinder extends Circle {
 2     private double length;    
 3     public Cylinder() {
 4         super(1);            //当父类的构造方法中有参时,必须使用super(参数值);                                   
 5         length=1;
 6     }
 7     public void setl(double length){
 8         this.length=length;
 9     }   
10     public double getl(){
11         return length;
12     }  
13 
14    //通过super调用父类方法
15     public double getarea(){
16         return super.getarea() *2+radius*2*3.14*length;    /*在父类中,radius是protected属性,可在子类中直接调用;如果属性为private,                                                                                             则用通过方法getr()获取半径*/
17     }
18     
19     public double getv(){
20         return super.getarea()*length;   //在子类的方法中使用super.被重写的父类方法对该方法进行调用
21     }    
22 } 

test.class

 1 public class test {
 2     public static void main(String args[]){
 3         Cylinder c=new Cylinder();
 4         System.out.println("圆柱体积为: "+c.getv());
 5         System.out.println("圆柱表面积为: "+c.getarea());
 6         c.setl(2);
 7         c.setr(1);
 8         System.out.println("圆柱体积为: "+c.getv());
 9         System.out.println("圆柱表面积为: "+c.getarea());
10     }
11 }

原文地址:https://www.cnblogs.com/jfl-xx/p/4679380.html