当前位置 : 主页 > 编程语言 > java >

【学懂Java】(四)面向对象编程-1

来源:互联网 收集:自由互联 发布时间:2023-02-04
一. OOP :Object Oriented Programming 1.面向过程和面向对象 面向过程 面向对象 区别 事物比较简单,可以用线性的思维去解决 事物比较复杂,使用简单的线性思维无法解决 共同点 1.面向过程和

一.OOP:Object Oriented Programming

【学懂Java】(四)面向对象编程-1_面向对象

1.面向过程和面向对象

面向过程

面向对象

区别

事物比较简单,可以用线性的思维去解决

事物比较复杂,使用简单的线性思维无法解决

共同点

1.面向过程和面向对象都是解决实际问题的一种思维方式

2.二者相辅相成,并不是对立的。解决复杂问题,通过面向对象方式便于我们从宏观上把握事物之间复杂的关系、方便我们分析整个系统;具体到微观操作,仍然使用面向过程方式来处理

2.举例

如何吃午饭

面向过程

面向对象

买菜

洗菜

点火

......

吃饭

饭店

厨师

在饭店吃厨师做好的饭

二.对象和类

  • 世界由对象组成
  • 类可以生成对象
  • 类是对象的抽象,对象是类的实例化
  • 对象和类的概念

    • 对象:是具体的事物
    • 类:是对象的抽象

    先有具体的对象,然后抽象各个对象之间象的部分,归纳出类通过类再认识其他对象。

    三.对象的特征

    1.属性

    属性——对象具有的各种特征

    每个对象的每个属性都拥有特定值

    2.方法

    方法——对象执行的操作

    对象:用来描述客观事物的一个实体,由一组属性和方法构成

    【学懂Java】(四)面向对象编程-1_创建使用对象_02

    四.类的特征

    1.属性

    属性(field),或者叫成员变量

    ▪属性用于定义该类或该类对象包含的数据或者说静态属性。属性作用范围是整个类体。在定义成员变量时可以对其初始化,如果不对其初始化,Java使用默认的值对其初始化。(数值:0,0.0    char:\u0000,    boolean:false,    所有引用类型:null)

    ▪属性定义格式:

    [修饰符] 属性类型 属性名 = [默认值]

    2.方法

    面向对象中,整个程序的基本单位是类,方法是从属于对象的

    方法定义格式:

    [修饰符] 方法返回值类型 方法名(形参列表 ) {// n条语句}

    JAVA中方法参数传递是:值传递

    【学懂Java】(四)面向对象编程-1_创建使用对象_03

    public class Student { //定义属性 int StuNumber; String name; int age = 20; //定义方法 void study() { System.out.println("学习不要谈恋爱"); } void play() { System.out.println("只学习不玩耍,聪明孩子也变傻"); } void eat(String food) { System.out.println("吃"+food); }}

    但是大家要注意,不是每一个类都有方法和属性

    五.创建和使用对象

    既然已经创建了一个类,那就需要学习如何创建一个对象:

    new关键字来创建一个对象:​​类名 对象名 = new 类名()​​

    对象的使用:​​对象名称.属性​​​​对象名称.方法​​

    public class Student{ //定义属性 int StuNumber; String name; int age; //定义方法 void study() { System.out.println("学习不要谈恋爱"); } void play() { System.out.println("只学习不玩耍,聪明孩子也变傻"); } void eat(String food) { System.out.println("吃"+food); } public static void main(String[] args) { Student stu1 = new Student(); System.out.println("默认值"); System.out.println(stu1.name); System.out.println(stu1.age); System.out.println(stu1.StuNumber); stu1.study(); stu1.eat("peach"); stu1.name = "Jack"; System.out.println("录入值"); //修改属性值 stu1.StuNumber = 2023119; stu1.age = 18; System.out.println(stu1.name); System.out.println(stu1.age); System.out.println(stu1.StuNumber); stu1.study(); stu1.eat("peach"); stu1.name = "Jack"; }}

    【学懂Java】(四)面向对象编程-1_面向对象_04

    可以类别之前学习的C语言结构体

    六.案例

    输入管理员名称和密码,正确才有权限更新,错误次数超过三次显示锁定。

    import java.net.SocketTimeoutException;import java.util.Scanner;public class Administrator { String loginName = "ak27"; String password = "12345"; public void introduce(){ System.out.println(loginName); System.out.println((password)); } public static void main(String[] args) { Administrator admin = new Administrator(); int count = 0; for(count=0; ; count++) { Scanner sc = new Scanner(System.in); System.out.println("请输入用户名:"); String name = sc.nextLine(); System.out.println("请输入密码:"); String psd = sc.nextLine(); if (name.equals(admin.loginName) && psd.equals(admin.password)) { System.out.println("密码以及用户名正确"); System.out.println("请输入新的用户名"); admin.loginName=sc.nextLine(); System.out.println("请输入新的密码"); admin.password=sc.nextLine(); break; } else { int left = 2 - count; if (count == 2) { System.out.println("密码或用户名错误超过三次,系统锁定"); break; } System.out.println("密码或用户名错误,还有" + left + "次机会"); } } }}

    案例中在进行字符串比较时,使用的是equals。

    字符串在进行比较时,==比较的是地址,equals比较的是具体的值。

    练习:尝试将下述代码设计的更加符合事实:例如设密码要重复输入两次

    import java.net.SocketTimeoutException;import java.util.Scanner;public class Administrator { String loginName = "ak27"; String password = "12345"; public void introduce(){ System.out.println(loginName); System.out.println((password)); } public static void main(String[] args) { Administrator admin = new Administrator(); int count = 0; for(count=0; ; count++) { Scanner sc = new Scanner(System.in); System.out.println("请输入用户名:"); String name = sc.nextLine(); System.out.println("请输入密码:"); String psd = sc.nextLine(); if (name.equals(admin.loginName) && psd.equals(admin.password)) { System.out.println("密码以及用户名正确"); System.out.println("请输入新的用户名"); admin.loginName=sc.nextLine(); System.out.println("请输入新的密码"); admin.password=sc.nextLine(); break; } else { int left = 2 - count; if (count == 2) { System.out.println("密码或用户名错误超过三次,系统锁定"); break; } System.out.println("密码或用户名错误,还有" + left + "次机会"); } } }}

    上一篇:Nginx与LUA(5)
    下一篇:没有了
    网友评论