Java面向对象入门(一)

第六天:面向对象入门

  1. 基本概念
    -对象:a.一切皆为对象
         b.对象都是属于某个类的
         c.对象都有属性和行为
         d.对象都是唯一的
     -类:类是将一类对象共同特征抽取出来的结果,是对象的蓝图和模板
    2.四大支柱
     -抽象(abstaction):寻找共性。定义类的过程就是一个抽象的过程,需要做数据抽象和行为抽象
     -封装(encapsulation):隐藏一切可以隐藏的复杂繁琐的实现细节,只提供清晰简单的接口(界面)
     -继承(inheritance):从已有的类创建新类的过程。提供继承信息的类叫父类(超类,基类),得到继承信息的类叫子类(派生类,衍生类)。
     -多态(polymorphism):执行相同的行为做了不同的事情(产生了不同的结果)。
    3. 定义类
public class{
//属性
//构造器
//方法(行为抽象)

}

4. 创建和使用对象

类型 变量名=new 构造器(参数列表);
变量名.方法(参数列表);

5.发现问题域中的类。
从问题描述中找名词和动词,名词会成为类或者对象的属性,动词会成为类或者对象的方法。

  1. 实例1:时钟

package com.lovoinfo;

import java.util.Calendar;
/**
 * 时钟类
 * @author Administrator
 *
 */
public class Clock {
    private int hour;
    private int minute;
    private int second;

/**
 * 构造器
 */
    public Clock() {
        Calendar cal=Calendar.getInstance();
        hour=cal.get(Calendar.HOUR_OF_DAY);
        minute=cal.get(Calendar.MINUTE);
        second=cal.get(Calendar.SECOND);

    }

/**
 * 时钟走字
 */
    public void go() {
        second++;
        if(second==60){
            second=0;
            minute++;
            if(minute==60){
                minute=0;
                hour++;
                if(hour==24){
                    hour=0;

                }
            }
        }
    }
/**
 * 时钟显示时间
 */
    public String display() {
        String str="";

        if(hour<10){
            str += "0";
        }
        str+=hour+":";
        if(minute<10){
            str += "0";

        }
        str+=minute+":";
        if(second<10){
            str += "0";

        }
        str+=second+":";
        return str;
    }
/**
 * 设置钟表小时
 * @param up
 */
    public void setHour(boolean up) {
        if (up) {
            //hour=(hour+1)%24
            hour += 1;
            if (hour == 24) {
                hour = 0;
            }
        } else {
            hour -= 1;
            if (hour == -1) {
                hour = 23;
            }
        }

    }
    /**
     * 设置钟表分钟
     * @param up
     */
    public void setMinute(boolean up){
        if(up){
            minute =(minute+1)%60;

        }else{
            minute -=1;
            if(minute==-1){
                minute=59;
            }
        }
    }

/**
 * 设置钟表秒数
 * @param up
 */
    public void setSecond(boolean up){
        if(up){
            second=(second+1)%60;
        }else{
            second-=1;
            if(second==-1){
                second=59;
            }
        }
    }
}

package com.lovoinfo;

import javax.swing.JOptionPane;


public class ClockTest {
    public static void main(String[] args) throws InterruptedException {
        Clock c = new Clock();
        JOptionPane.showMessageDialog(null, c.display());
//      while(true){
//          Thread.sleep(1000);
//          System.out.println(c.display());
//          
//      c.go();
//      }
    }

}
  1. 实例2:游泳池
package com.lovoinfo;

public class Circle {
    private double radius;//定义圆的半径

    /**
     * 构造器
     * @param radius
     */
    public Circle(double radius) {

        this.radius = radius;
    }

    /**
     *计算圆的周长
     * @return
     */
    public double circumference(){
        return Math.PI*2*radius;
    }
    /**
     * 计算圆的面积
     * @return
     */
    public double area(){
        return Math.PI*radius*radius;
    }

}

package com.lovoinfo;

import java.util.Scanner;


public class CircleTest {
    private static final double FUNIT = 5;
    private static final double CUNIT = 18;
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入圆的半径:");
        double r=sc.nextDouble();
        Circle c1=new Circle(r); //创建半径为r的圆
        Circle c2=new Circle(r+3);//创建半径为r+3的圆
        System.out.printf("围墙的造价:¥%.2f",c2.circumference()*FUNIT);
        System.out.printf("过道的造价¥%.2f:",(c2.area()-c1.area())*CUNIT);

        sc.close();

    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值