Java---面向对象

一.面向对象

1.概念

1.1面向过程 C

吃饭:动作为核心

起身--》开门--》大量的逻辑判断

1.2面向对象 C++/Java/Python/Go

目标:吃饭

人(忽略)吃饭

站在人类的角度思考问题

2.什么是对象?

Object-->东西(万事万物皆是对象。)

2.1类

类:抽象,一个设计,对象的抽象

对象:具体,类的具体

类 -----> 对象

狗 ---> Dog ---> 抽象的

(两只耳朵,一只尾巴,四条腿,一张嘴,毛发)----特征

(陪伴(动作,行为))----职责

Class ---> Type

java 复制代码
public class Dog {

    //狗的信息
    int leg = 4;
    String hair = "金黄色";
    double price = 666.66;

    public void run(){
        System.out.println("我的狗跑的飞快!");
    }

    public void accompany(){
        System.out.println("带来快乐...");
    }

    public static void main(String[] args) {
        Dog myDog = new Dog();
        myDog.run();
        myDog.accompany();
    }
}

3.以冰箱(Fridge)为例

1.名字(Fridge)

2.属性、特征、域(field)、xxx变量

3.方法、函数、动作

3.1Java的注释

*类、方法

java 复制代码
/**
 *
 *
 /

*行注释

java 复制代码
//

*块注释

java 复制代码
/*
 *
 */
3.2冰箱的类

属性、方法

3.3执行冰箱操作

升高温度、降低温度工作

3.4异常情况

限制温度

java 复制代码
import javax.swing.*;

//冰箱类
public class Fridge {

    private String brand;
    private String color;
    private double size;
    private double weight;
    private double price;
    private int year;//保修年限
    private int temperature = 5;//温度
    private String company;//公司

    public String getBrand() {
        return brand;
    }

    //给汽车的brand设置品牌
    public void setBrand(String brand) {
        this.brand = brand;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public double getSize() {
        return size;
    }

    public void setSize(double size) {
        this.size = size;
    }

    public double getWeight() {
        return weight;
    }

    public void setWeight(double weight) {
        this.weight = weight;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public int getYear() {
        return year;
    }

    public void setYear(int year) {
        this.year = year;
    }

    public int getTemperature() {
        return temperature;
    }

    public void setTemperature(int temperature) {
        this.temperature = temperature;
    }

    public String getCompany() {
        return company;
    }

    public void setCompany(String company) {
        this.company = company;
    }

    //冰箱升高的温度方法
    // n 要升高的温度
    public void tempUp(int n){
        if (temperature+n > 20){
            JOptionPane.showMessageDialog(null,"温度超出冰箱范围,升温失败");
        }else {
            temperature += n;
        }
    }

    //冰箱降低的温度方法
    // n 要降低的温度
    public void tempDown(int n){
        if (temperature-n < -20){
            JOptionPane.showMessageDialog(null,"温度超出冰箱范围,降温失败");
        }else {
            temperature -= n;
        }
    }

    //显示当前冰箱的温度
    public void print(){
        System.out.println("当前温度:" + temperature);
    }

    public static void main(String[] args) {
        Fridge myFridge = new Fridge();
        myFridge.setBrand("无敌");
        System.out.println(myFridge.getBrand());


        System.out.println("冰箱启动");
        myFridge.print();
        while (true){

            String opt = JOptionPane.showInputDialog("请选择操作(1-升温,2-降温)");

            //String s = null;
            int n = 0;
            if ("1".equals(opt)) {
                //升温操作
                //String s = JOptionPane.showInputDialog("请输入要升高的度数");
                n = Integer.parseInt(JOptionPane.showInputDialog("请输入要升高的度数"));
                myFridge.tempUp(n);
            }else if ("2".equals(opt)){
                //降温操作
                //s = JOptionPane.showInputDialog("请输入要降低的度数");
                n = Integer.parseInt(JOptionPane.showInputDialog("请输入要降低的度数"));
                myFridge.tempDown(n);
            }
            myFridge.print();

            //判断是否退出操作
            int c = JOptionPane.showConfirmDialog(null,"是否继续进行");
            if (0 != c){
                JOptionPane.showMessageDialog(null,"操作完成,谢谢使用");
                break;
            }
        }
    }
}

4.面向对象描述类

4.1文字描述

4.2代码描述

4.3类图描述

5.访问控制符

5.1 public---公开类型

任何代码都能访问

5.2 private---私有的

java 复制代码
private String brand;
 
private String color;

private double size;
 
private double weight;
    
private double price;
    
private int year;//保修年限
    
private int temperature = 5;//温度
    
private String company;//公司

只有在本class内可以访问

6.属性操作

java 复制代码
    public String getBrand() {
        return brand;
    }

    //给汽车的brand设置品牌
    public void setBrand(String brand) {
        this.brand = brand;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public double getSize() {
        return size;
    }

    public void setSize(double size) {
        this.size = size;
    }

    public double getWeight() {
        return weight;
    }

    public void setWeight(double weight) {
        this.weight = weight;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public int getYear() {
        return year;
    }

    public void setYear(int year) {
        this.year = year;
    }

    public int getTemperature() {
        return temperature;
    }

    public void setTemperature(int temperature) {
        this.temperature = temperature;
    }

    public String getCompany() {
        return company;
    }

    public void setCompany(String company) {
        this.company = company;
    }

setter / getter方式

通过setXXX(参数)存储

通过getXXX()取出数据

7.this关键字

java 复制代码
 //给汽车的brand设置品牌
    public void setBrand(String brand) {
        this.brand = brand;
    }

this ----- 当前对象

this.brand = brand; //当前对象的属性brand,值为传入的变量brand的值

相关推荐
程序leo源1 小时前
C语言:操作符详解1
android·java·c语言·c++·青少年编程·c#
轮到我狗叫了2 小时前
栈的应用,力扣394.字符串解码力扣946.验证栈序列力扣429.N叉树的层序遍历力扣103.二叉树的锯齿形层序遍历
java·算法·leetcode
小柯J桑_2 小时前
C++:探索AVL树旋转的奥秘
开发语言·c++·avl树
冰之杍3 小时前
Vscode进行Java开发环境搭建
java·ide·vscode
skaiuijing3 小时前
Sparrow系列拓展篇:消息队列和互斥锁等IPC机制的设计
c语言·开发语言·算法·操作系统·arm
雯0609~5 小时前
c#:winform调用bartender实现打印(学习整理笔记)
开发语言·c#
胜天半子_王二_王半仙6 小时前
c++源码阅读__smart_ptr__正文阅读
开发语言·c++·开源
沐泽Mu6 小时前
嵌入式学习-C嘎嘎-Day08
开发语言·c++·算法
Non importa6 小时前
汉诺塔(hanio)--C语言函数递归
c语言·开发语言·算法·学习方法
LinuxST6 小时前
27、基于Firefly-rk3399中断休眠唤醒实验(按键中断)
linux·开发语言·stm32·嵌入式硬件