JAVA学习记录(3)——面向对象编程(一)

 面向对象程序设计:

  • 每个对象都有自己的状态(也称为属性)和行为
  • 具有共同状态和行为的对象被认为是属于同一类的。
  • 类是抽取不同实体的共性而得到的一个抽象的概念模型。

类和对象

 

 1.任意给出一个圆,求其面积和周长。(面向对象编程)

UML图:

考试要考!!!

 

具体图形为:

代码:

//任意给出一个圆,求其面积和周长。(面向对象编程)
//数据保留两位小数方法
import java.util.Scanner;

public class demo3 {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入半径:");
        float radius =  sc.nextFloat();
        Circle circle = new Circle(radius);
        double area = circle.getArea();
        double length = circle.getLength();
        //保留小数点后两位小数
        System.out.println("半径为"+radius+"的圆的面积为:"+String.format("%.2f",area));
        System.out.println("半径为"+radius+"的圆的周长为:"+String.format("%.2f",length));
    }
}
class Circle{
    float radius;//实例变量
    public Circle(float radius){   //重写构造方法,传入randius参数
        this.radius = radius;       //this关键字
    }

    public double getArea(){
        //Mith.PI,在Mith模块中,所有方法都用static修饰,所以叫类方法,具体static的用法后面会提到
        return (Math.PI)*radius*radius;
    }
    public double getLength(){
        return 2*(Math.PI)*radius;
    }
}

 2.任意给出一三角形,计算其面积并输出面积。(求解公式如下:)

        解决方法:类名:Triangle

                          属性:三边:float a,float b,float c

                          方法:getArea():float

                      =>实例化对象:triangle

                          调用方法:triangle.getArea()->得到area

 在类的内部,可以访问任何成员。——类中的方法可以访问成员变量,也可以调用成员方法!!!

构造方法

  • 构造方法可以重载。它们由不同的参数表区分。(在上面代码中已经体现构造方法的重载)
  • 重载的意思是:多个方法具有相同的名字,但这些方法的参数必须不同,即或者是参数的个数不同,或者是参数的类型不同
  • 方法的返回类型和参数的名字不参与比较 . 方法重载是一种多态的体现

变量、方法

成员变量:类体中、方法外定义的变量称为类的成员变量

  • 成员变量在定义时有默认初值——int型默认为零,不需要赋值,也可输出
  • 成员变量在它所在的整个类内有效

局部变量:在方法体中定义的变量、方法的参数被称为局部变量。

  • 局部变量在定义时没有默认初值——不赋值会报错:可能尚未初始化变量a
  • 局部变量在它所在的方法内有效
  • 局部变量不能说明为static的。  
//调用变量方法
//static修饰变量有优点

import java.util.Scanner;

public class demo4 {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入半径:");
        float radius =  sc.nextFloat();
        Circle1 circle = new Circle1(radius);
        float r = circle.radius; //对象.实例变量名
        System.out.println("半径为:"+r);
        //成员变量有默认初值,即使在没有赋值的情况下,也可以输出
        int a = circle.a;
        System.out.println("在没有给a赋初值的情况下:a="+a);
        //Math.PI,在Mith模块中,所有方法都用static修饰,访问方法:类名.类变量名.
        System.out.println("PI值为"+Math.PI);  //类名.类变量名

        //Math.PI = 3.14;  //Cannot assign a value to final variable 'PI'(不能给最终变量PI赋值)

        //为什么用static修饰方法=>个人想法(不够之后再补充):
        //1.使用static修饰的变量可以直接被“类名.类变量名”的方式调用,这样在进行常用变量调用的时候,
        // 不需要再去实例化一个对象,然后按照“对象.实例变量名”的方式调用了,减少了很多麻烦
        //2.对于有一些默认值的变量,我们一般不希望用户修改它,以免造成紊乱,所以用static修饰,使其变为一个静态变量

        circle.set();
    }
}
class Circle1{
    float radius;//实例变量
    int a;
    public Circle1(float radius){   //重写构造方法,传入randius参数
        this.radius = radius;       //this关键字
    }
    public void set(){
        //报错:可能尚未初始化变量a
        //int a;
        //System.out.println(a);

        //初始化a,成功
        int a = 3;
        System.out.println("初始化局部变量a后,输出值为:"+a);
    }
}

 

为什么用static修饰方法=>个人想法(不够之后再补充):

  • 使用static修饰的变量可以直接被“类名.类变量名”的方式调用,这样在进行常用变量调用的时候,不需要再去实例化一个对象,然后按照“对象.实例变量名”的方式调用了,减少了很多麻烦

  • 对于有一些默认值的变量,我们一般不希望用户修改它,以免造成紊乱,所以用static修饰,使其变为一个静态变量                                                    Math.PI = 3.14;  //Cannot assign a value to final variable 'PI'(不能给最终变量PI赋值)

 ​​​​​​

具体定义格式:

 

 

 类方法不可以操作实例变量原因:

因为类方法的调用可以通过“类名.方法名([实参])”方式,此时类还没有创建对象,因此实例成员变量还没有分配内存,所以无法调用。

 this关键字

  • java为每个对象分配一个this引用变量,代表当前对象。
  • 作用:区分同名的实例变量和局部变量。
  • this可以出现在实例方法和构造 方法中,但不可以出现在类方法中。(和类方法不可以操作实例变量原因类似,没有给实例变量分配内存,也就不存在当前对象了)

 对象的组合

  • 什么是对象的组合:

         一个类中的成员变量,是另一个类的对象,就称为对象的组合。(一个类的实例化对象,作为另一个类的成员变量而存在)

不想写了,下一个再写吧.如果想看的,可以去JAVA学习记录(4)去看哦,goodbye~~

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值