封装&构造方法

封装

概述:

隐藏对象的属性和实现细节,仅对外提供公共访问方式

好处:

  1. 隐藏实现细节,提供公共的访问方式
  2. 提高了代码的复用性
  3. 提高了安全性

原则:

  1. 将不需要对外提供的内容都隐藏起来
  2. 把属性隐藏,提供公共方法对其访问

privaite关键字

特点:

  1. 权限修饰符
  2. 可修饰成员变量和方法
  3. 被起修饰的成员只能在本类中被访问

应用:

  1. 把成员变量用private修饰
  2. 提供对应的getXxx()和setXxx()方法

this关键字

当局部变量和成员变量名称相同时,如果不用this关键字,会出现局部变量隐藏成员变量的问题。

this代表当前类的一个引用,可理解为就是该类的对象,那个对象调用这个方法,方法中的this就代表那个对象。

构造方法

创建对象,给对象中的成员进行初始化。

特点:

  1. 方法名和类名相同
  2. 没有返回值类型,连void也没有
  3. 没有具体的返回值类型

注意

  1. 如果我们没有给出构造方法,系统将自动提供一个无参构造方法。

  2. 如果我们给出了有参数构造方法,系统将不再提供默认的无参构造方法。

    建议永远自己给出无参构造方法

构造方法的重载

构造方法的参数列表不同

例:

public class Erwei {
    private int r;       /*私有成员变量  圆的半径*/
    /*私有成员变量  三角形的三边长*/
    private int a;
    private int b;
    private int d;
    /*一.构造方法,传入圆的半径*/
    public Erwei(int r)
    {
        this.r = r;        //this.r  即代表  new的对象的半径

    }
    /*二.构造方法重载,传入三角形的三边长*/
    public Erwei(int a,int b,int c){
        if(a+b>c&&a-b<c){
            this.a = a;
            this.b = b;
            this.d = c;
        }
    }
    /*三.构造方法重载,同时传入圆的半径和三角形三边长*/
    public Erwei(int r,int a,int b,int c){
        this.r = r;
        if(a+b>c&&a-b<c){
            this.a = a;
            this.b = b;
            this.d = c;
        }
    }
    /*set,get方法,全部是public修饰的,可以在外界调用*/
    public int getR() {
        return r;
    }

    public void setR(int r) {
        this.r = r;
    }

    public int getA() {
        return a;
    }

    public void setA(int a) {
        this.a = a;
    }

    public int getB() {
        return b;
    }

    public void setB(int b) {
        this.b = b;
    }

    public int getD() {
        return d;
    }

    public void setD(int d) {
        this.d = d;
    }
    /*圆的面积*/
    public double getArea(){
        double area = this.r*this.r*Math.PI;
        return area;
    }
    /*圆的周长*/
    public double getperimeter(){
        double perimeter = 2*this.r*Math.PI;
        return perimeter;
    }
    /*三角形的面积*/
    public double getArea2(){
        double s = (this.a+this.b+this.d)/2;
        double area = Math.sqrt(s*(s-this.a)*(s-this.b)*(s-this.d));
        return area;
    }
    /*三角形的周长*/
    public double getperimeter2(){
        double s = this.a+this.b+this.d;
        return s;
    }
}
import java.util.Scanner;

public class Test {
    public static void main(String[] args) {

        Scanner into =new Scanner(System.in);
        System.out.println("请输入半径");
        int r = into.nextInt();
        System.out.println("请输入三角形的三边长");
        int a = into.nextInt();
        int b = into.nextInt();
        int c = into.nextInt();

        Erwei math = new Erwei(r,a,b,c);

        double area= math.getArea();
        System.out.println("圆的面积为:" + area);
        double perimeter = math.getperimeter();
        System.out.println("圆的周长为:"+ perimeter);

        System.out.println("================================");

        double area1 =  math.getArea2();
        System.out.println("三角形的面积为:" + area1);
        double perimeter1 = math.getperimeter2();
        System.out.println("三角形的周长为:" + perimeter1);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值