首页 > 其他分享 >面向对象

面向对象

时间:2023-03-11 18:13:26浏览次数:43  
标签:String void System 面向对象 println public out

面向对象

一、IDEA的一些基本使用

网址:IntelliJ IDEA – 领先的 Java 和 Kotlin IDE (jetbrains.com)

创建IDEA工程:

  • 创建一个空的工程

image

image

设置主题和字体设置

image

image

image-20230311164311721

Alt+Shift+Up/Down 上/下移一行
Ctrl+D 复制行
Ctrl+X 删除行
Ctrl+Y 删除当前行
Ctrl+Shift+U 大小写转化
Shift+Enter 向下插入新行
Ctrl+Shift+Space 自动补全代码
Alt+Insert 以生成构造器/Getter/Setter等

二、面对对象

什么的面向对象:

用程序去模拟现实世界,因为这是最直观的。

1.什么是对象

万物皆对象,是真正存在的事物

是对类的一个具象,是一个实体。

2.什么是类

  • 具有共性的一组事物的抽象(模板),叫做类,是一个概念而不是具体的事物

  • 通常是对一组具有相同特性的对象,将其共性抽取出来

  • 在程序当中:类是一个文件

3.对象的构成

  • 特性(属性):可以落于纸面,可以进行量化,可以描述

  • 行为(方法):用于表示过程,行为

    没有任何一个事物可以脱离场景独立存在,类的扩展可以在水平(同一类型,不同的展示)扩展,也可以在垂直(上级类型/下级类型)扩展

4.类的创建

  1. IDEA当中创建模块

image

语法:

使用关键字:class

public class Person{
    
}

类的成员

public class Person {
	//属性
	public int id;
	public String name;
	public int sex;
	public int age;
	//方法
	public void say(){
		System.out.println("我真帅");
	}
	public void sleep(){
		System.out.println("在哪里跌倒,就在哪里睡着");
	}
}
  • 属性(成员变量)的结构:
    • 访问修饰符 属性类型 属性名
  • 方法(成员方法)的结构
    • 访问修饰符 返回值类型(void) 方法名(方法体)

注意:

方法发书写非常的灵活,这里仅仅是演示方法的使用

5.创建对象

语法:

类名 对象名 = new 类名/构造方法名();

案例

public class Main {
	public static void main(String[] args) {
	//对象的创建
	Person a = new Person();
	a.id = 1;
	a.name = "df";
	a.sex = 1;
	a.age = 18;
	Person b = new Person();
	b.id = 2;
	b.name = "shmily";
	b.sex = 0;
	b.age = 16;
	System.out.println("df的姓名"+a.name);
	System.out.println("shmily的姓名"+b.name);
	}
}
  • 给对象的属性赋值

语法:

对象名.属性名 = 值;
  • 从对象的属性取值

语法:

变量类型 变量名 = 对象名.属性名;
  • 方法的调用
public class Main2 {
	public static void main(String[] args) {
	//对象的创建
	Person a = new Person();
	a.say();
	Person b = new Person();
	b.say();
	}
}

语法:

对象名.方法名();

注意:
任何对象,如果没有实例化,则直接调用时,会出现空指针异常。

Exception in thread "main" java.lang.NullPointerException

什么是实例化:

new出来的这个部分就是实例,new的这个行为叫做实例化

匿名实例化:

public class Main2 {
	public static void main(String[] args) {
	//对象的创建
	Person df = new Person();
	//匿名创建对象
	new Person();
	new Person().name = "DF";//匿名属性赋值
	new Person().say();//匿名方法调用
	}
}

注意:
1.属于一次性消耗
2.只要看见new关键字,就是一个新的对象

课间作业

  • 在教室中找素材创建10个类
  • 为每一个类,赋予足够多的属性和方法(10属性,5个方法)
  • 为每个类创建其对象,并赋予属性值,同时调用所有的方法

Fan.java

package com.mine.student;

public class Fan {
    //风扇
    public int fanId;
    public String fanName;
    public String color;
    public String fanLong;
    public String fanWide;
    public String fanHigh;
    public double fanPrice;
    public String fanMaterial;
    public String factoryTime;
    public double serviceLife;

    public void open() {
        System.out.println("风扇开始旋转~~~");
    }

    public void close() {
        System.out.println("风扇开始停止~~~");
    }

    public void speedUp() {
        System.out.println("调快风扇转速~~~");
    }

    public void speedDown() {
        System.out.println("调慢风扇转速~~~");
    }

    public void rollback() {
        System.out.println("风扇开始逆时针旋转~~~");
    }
}

Cup.java

package com.mine.student;

public class Cup {
    //杯子
    public int cupId;
    public String cupName;
    public String color;
    public double cupLong;
    public double cupWide;
    public double cupHigh;
    public String cupMaterial;
    public String cupCapacity;
    public String cupSpecification;
    public double cupPrice;
    public void fillWater(){
        System.out.println("装水~~~");
    }
    public void tea(){
        System.out.println("泡茶~~~");
    }
    public void bubbleGoji(){
        System.out.println("泡枸杞~~~");
    }
    public void driedMilk(){
        System.out.println("泡奶粉~~~");
    }
    public void coffee(){
        System.out.println("泡咖啡~~~");
    }
}

Main.java

package com.mine.student;

public class Main {
    public static void main(String[] args) {
        //风扇
        Fan fan = new Fan();
        fan.fanId = 1;
        fan.fanName = "风扇";
        fan.color = "pink";
        fan.fanPrice = 66.6;
        fan.fanLong = "50cm";
        fan.fanWide = "30cm";
        fan.fanHigh = "1cm";
        fan.factoryTime = "2022-10-18";
        fan.fanMaterial ="金属";
        System.out.println("编号:"+fan.fanId+",名字:"+fan.fanName+",颜色:"+fan.color+",价格:"+fan.fanPrice);

        String str = String.format("%s的编号是:%d,颜色%s,价格%f,长:%s,宽:%s,高:%s,出厂时间:%s,材质:%s",fan.fanName,
                fan.fanId,fan.color,fan.fanPrice,fan.fanLong,fan.fanWide,fan.fanHigh,fan.factoryTime,fan.fanMaterial);
        System.out.println(str);

        //茶杯
        Cup cup = new Cup();
        cup.cupId = 2;
        cup.cupName = "SUPER";
        cup.color = "Black";
        cup.cupMaterial = "304不锈钢";
        cup.cupPrice = 99.99;
        System.out.println("编号:"+cup.cupId+",名字:"+cup.cupName+",颜色:"+cup.color+",价格:"+cup.cupPrice+",材质:"+cup.cupMaterial);



    }
}


结果:
编号:1,名字:风扇,颜色:pink,价格:66.6
风扇的编号是:1,颜色pink,价格66.600000,长:50cm,宽:30cm,高:1cm,出厂时间:2022-10-18,材质:金属
编号:2,名字:SUPER,颜色:Black,价格:99.99,材质:304不锈钢

三、方法

什么是方法:

可以实现特定功能的代码,可以重复使用。

我们不需要知道方法的内部是如何执行的,我们只需要知道,我应该给这个方法提供什么样的参数,以及该方法可以返回给我的返回值

  • 定义语法
访问修饰符 返回值类型 方法名 (形参列表){
	方法体
	return 返回值
}
  • 返回值

两个大类:

  1. void:没有返回值
public class Person {
	public void say(){
		System.out.println("巴拉巴拉");
	}
}
public class Main {
	public static void main(String[] args) {
		Person p = new Person();
		p.say();//调用就行,不需要返回任何东西
	}
}
  1. 有返回值(返回值类型

注意:

返回值的类型可以任意,但是注意,这里是类型,不是值。
使用关键字return返回具体的值

public class Person {
	public String say(){
		return "巴拉巴拉";//返回的值,必须和声明的返回值类型保持一致
	}
}
public class Main {
	public static void main(String[] args) {
		Person p = new Person();
		String result = p.say();//调用者调用方法得到的结果,可以使用相同类型的变量承接
	}
}

返回值的类型和返回的值,以及调用者用于承接结果的变量类型都需要保持一致

  • return关键字

return在有返回值的情况下,必须存在,且只能执行一次

在没有返回值的情况下,可有可没有

案例:

  1. 在void返回值类型的情况下
public class Person {
	public void say(){
		int i = 1;
		if(i > 0){
			System.out.println("在这里返回,终止程序继续运行");
			return;//如果执行了,方法立即终止
		}
		System.out.println("这是后续内容");
	}
}
public class Main {
	public static void main(String[] args) {
		Person person = new Person();
		person.say();
	}
}

结果:
在这里返回,终止程序继续运行
  1. 如果有返回值
public class Person {
public void say(){
	int i = 1;
    	if(i > 0){
			System.out.println("在这里返回,终止程序继续运行");
			return;//如果执行了,方法立即终止
			}
		System.out.println("这是后续内容");
	}
	public int run1(){
		int i = 1;
		if(i > 0){
			System.out.println("作为一个分支1");
			return 100;//无法被计算机确定,肯定能被执行
		}else{
			System.out.println("作为一个分支2");
			return 200;//如果加上else则至少有一个return会被执行
		}
		// System.out.println("这是后续内容");//这里根本无法被执行到
	}
	public int run2(){
		int i = 1;
		if(i > 0){
			System.out.println("作为一个分支1");
			return 100;//无法被计算机确定,肯定能被执行
		}
		System.out.println("这是后续内容");
		return 200;//这个return在排除其他任何一个情况后,确保最终一定会有一个return被执行
	}
}

只要返回值类型不是void,那么必须要提供返回值,即执行return语句,且只能执行一次。

课堂练习

以面向对象的思路完成学生考试成绩录入系统

Student.java

package com.mine.student;

public class Student {
    /**
     * 学生学号
     */
    public int stuId;
    /**
     * 学生名字
     */
    public String stuName;
    /**
     * 学生成绩
     */
    public String stuScore;

}

SystemUtil.java

package com.mine.student;

public class SystemUtil {
    /**
     * 学生成绩排序
     */
    public void sortScore(){

    }
}

ExamSystem.java

package com.mine.student;

import java.util.Scanner;

public class ExamSystem {

    /**
     * 声明scanner对象
     */
    public Scanner scanner;

    /**
     * 初始化
     */
    public void init(){
        scanner = new Scanner(System.in);
        System.out.println("初始化完成!");
    }
    /**
     * 选择功能
     */
    public int selectOption(){
        System.out.println("请选择1.录入学生成绩\t2.展示学生成绩\t3.退出系统");
        return scanner.nextInt();
    }

    /**
     * 录入学生成绩
     */
    public void insertScore(){
        System.out.println("学生成绩录入成功!");
    }

    /**
     * 展示学生成绩
     */
    public void showScore(){
        System.out.println("学生成绩展示成功!");
    }

    /**
     * 退出系统
     */
    public void exit(){
        System.out.println("系统退出成功!");
    }
}

Main.java

package com.mine.student;

public class Main {
    public static void main(String[] args) {
        ExamSystem system = new ExamSystem();
        System.out.println("欢迎使用学生管理系统!");
        system.init();
        boolean flag = true;
        while(flag){
            int num =system.selectOption();
            switch (num){
                case 1:
                    system.insertScore();
                    break;
                case 2:
                    system.showScore();
                    break;
                case 3:
                    system.exit();
                    flag = false;
                    break;
                default:
                    System.out.println("输入错误!");
            }
        }
    }
}

标签:String,void,System,面向对象,println,public,out
From: https://www.cnblogs.com/DFshmily/p/17206620.html

相关文章

  • java基础二-面向对象的三大特性
    面向对象的是三大特性封装一.概念将类的信息隐藏在类的内部,不允许外部程序直接访问,通过类提供的方法实现对隐藏信息的操作和访问封装的两大原则尽可能多的东西藏起......
  • 面向对象 对键盘输入的值做判断 不允许学生id重复
    类packagecom.fqs.demo1;publicclassStudent{privateStringid;privateStringname;privateintage;//无参数publicStudent(){......
  • java面向对象知识点
    thisthis(id,name);//调用另一个方法只能放在第一行thisid=id;thisname=name;publicStudent(intid,Stringname,chargender){this.id=id;......
  • python入门学习-2.特性、函数、面向对象编程、文件读写
    高级特性切片取一个list或tuple的部分元素>>>L=['Michael','Sarah','Tracy','Bob','Jack']笨方法:>>>[L[0],L[1],L[2]]['Michael','Sarah','Tracy']切......
  • 11. 进阶面向对象 - 3
    11.进阶面向对象-3super方法引入上一节课程我们知道,如果父类中的方法在派生的子类中不能满足其需求的话,可以在子类中通过重写解决这个问题但是很多情况下,父类中的......
  • 10. 深入面向对象 - 2
    10.深入面向对象-2隐藏数据引入classCat(object):def__init__(self,new_name,new_age):self.name=new_nameself.age=new_aged......
  • 9. 初识面向对象 - 1
    9.初识面向对象-1引入面向对象本节将通过一个案例,先用之前我们编写的代码方式进行实现,然后分析利弊。从而引出面向对象。需求编写一个程序,完成1个学生的基本操作......
  • 面向对象开发DialogComponent组件
    ......
  • L10.面向对象
    --父类localParentClass={id="085",name="紫霞",--ParentClass.__index=ParentClass#自索引错误写法,__index赋值的是一个nil值,也就是说......
  • 5 面向对象
    面向对象1、面向过程&面向对象面向过程思想步骤清晰简单,第一步做传么,第二步做什么....面对过程适合处理一些较为简单的问题面向对象思想物以类聚,分类的思......