文章目录

  • 面向对象3.0
    • 1. JavaBeans规范类对象调用
    • 2. 多类合作【重点】
      • 2.1 汽修厂和汽车
      • 2.2 汽车类代码实现
      • 2.3 修理厂代码实现
      • 2.4 main方法
      • 2.5 笔记本电脑,键盘和屏幕
      • 2.6 键盘类代码实现
      • 2.7 屏幕类对象
      • 2.8 电脑类对象
      • 2.9 main方法
      • 2.10 多类合作总结
    • 3. 匿名对象
      • 3.1 匿名对象是什么???
      • 3.2 匿名对象推荐使用方式

面向对象3.0

1. JavaBeans规范类对象调用

package com.qfede.a_javabeans;class Person {// 成员变量 Fieldprivate int id;private String name;private char gender;public Person() {}public Person(int id, String name, char gender) {this.id = id;this.name = name;this.gender = gender;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public char getGender() {return gender;}public void setGender(char gender) {this.gender = gender;}}public class Demo1 {// Alt + / 自动补齐public static void main(String[] args) {// Ctrl + 1 快速修复功能,可以给予当前方法生成局部变量// Assign statement to new local variablePerson person = new Person();person.setId(1);person.setName("苟磊");person.setGender('男');System.out.println("ID:" + person.getId() + " Name:" + person.getName() + " Gender:" + person.getGender());}
}

2. 多类合作【重点】

2.1 汽修厂和汽车
第一个问题:汽修厂和汽车是否可以各自看做是一个类???汽修厂类 汽车类第二个问题:汽修厂和汽车之间什么关系???汽修厂最重要的目标是修理汽车,汽修厂中必须有一个方法,方法的目的是修车。汽车类:成员变量:品牌颜色轮胎个数成员方法:飙车 race汽修厂:成员变量:名字地址联系方式成员方法:修理汽车
2.2 汽车类代码实现
package com.qfede.b_car;/*** 汽车类*        后期代码中,一个类对应一个文件,要求类名和文件一致,并且有public修饰*         public修饰的类名必须和文件名一致* * @author Anonymous*/
public class Car {// 成员变量 Fieldprivate String name;private String color;private int wheelCount;// 构造方法 Constructorpublic Car() {}public Car(String name, String color, int wheelCount) {this.name = name;this.color = color;this.wheelCount = wheelCount;}/** 飙车方法*      飙车方法有一个限制,轮胎个数必须为4,如果轮胎个数不为4无法飙车*//*** 飙车方法 功能方法*/public void race() {// 轮胎个数为4 ,可以飙车if (4 == wheelCount) {System.out.println("开着" + color + name + "在航海中路120KM/h飙车");} else {System.out.println("轮胎出问题了,快去修理厂!!!");}}// Setter and getter methodpublic String getName() {return name;}public void setName(String name) {this.name = name;}public String getColor() {return color;}public void setColor(String color) {this.color = color;}public int getWheelCount() {return wheelCount;}public void setWheelCount(int wheelCount) {this.wheelCount = wheelCount;}
}
2.3 修理厂代码实现
package com.qfede.b_car;public class Factory {// 成员变量 Fieldprivate String name;private String address;private String tel;// 构造方法 Constructorpublic Factory() {}public Factory(String name, String address, String tel) {this.name = name;this.address = address;this.tel = tel;}/** 修理汽车方法* * 方法分析:*       权限修饰符:*             public*         返回值类型:*             void*       方法名:*           fixCar*     形式参数列表:*            修理厂修车,需要修理的是外来车辆,不是修理厂自有车辆!!!*           当前方法需要的参数是一个汽车类对象,也就是Car类对象*         (Car car)** 方法声明:*      public void fixCar(Car car)*//*** 修理厂类 Factory修理汽车方法,需要的参数是一个Car类的对象* * @param car Car类对象,是当前方法所需的外来数据* @throws Exception */public void fixCar(Car car) throws Exception {// 检查轮胎情况if (car.getWheelCount() < 4) {System.out.println("车辆轮胎出现问题,维修中....");Thread.sleep(1000);// 修理汽车轮胎,赋值为4car.setWheelCount(4);System.out.println("修理完毕,请付款10W");Thread.sleep(1000);System.out.println("微信收款 10万元");} else {System.out.println("车辆轮胎无问题,是否需要保养,保养一次32W");}}// Setter and getter methodpublic String getName() {return name;}public void setName(String name) {this.name = name;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public String getTel() {return tel;}public void setTel(String tel) {this.tel = tel;}
}
2.4 main方法
package com.qfede.b_car;public class MainProject {public static void main(String[] args) throws Exception {// 创建一个Car类对对象Car car = new Car("Audi A4L 45 TFSI", "白色", 4);for (int i = 0; i < 10; i++) {/** Ctrl + 1 快速修复,敲回车* 当前代码休眠1s*/Thread.sleep(1000);// 通过Cat类对象调用race方法 飙车!!!car.race();}// 轮胎Boom 蹦沙卡拉卡System.out.println("轮胎 蹦沙卡拉卡");Thread.sleep(1000);// 轮胎个数 修改为3 爆胎一个car.setWheelCount(3);Thread.sleep(1000);// 爆胎之后继续飙车,结果需要进入修理厂car.race();// 修理厂准备完毕Factory factory = new Factory();factory.setName("苟磊の汽修店");factory.setAddress("Tokyo JDM");factory.setTel("138后面随便");// 面向对象使用的方法,要什么给什么???factory.fixCar(car);for (int i = 0; i < 10; i++) {/** Ctrl + 1 快速修复,敲回车* 当前代码休眠1s*/Thread.sleep(1000);// 通过Cat类对象调用race方法 飙车!!!car.race();}}
}
2.5 笔记本电脑,键盘和屏幕
第一个问题:电脑,键盘和屏幕都可以看做是一个类第二个问题:电脑,是包含键盘和屏幕。键盘类:成员变量:品牌按键个数成员方法:提供成员变量修改和获取方法,Setter and Getter屏幕:成员变量:品牌尺寸成员方法:提供成员变量修饰和获取方法,Setter and Getter电脑类【重点】:成员变量:屏幕类对象键盘类对象成员方法:换屏幕方法换键盘方法展示屏幕和键盘的属性。
2.6 键盘类代码实现
package com.qfedu.b_computer;public class KeyBoard {// 成员变量 Fieldprivate String name;private int keyCount;// 构造方法 Constructor Alt + Shift + Spublic KeyBoard() {}public KeyBoard(String name, int keyCount) {this.name = name;this.keyCount = keyCount;}// Setter and getter 方法public String getName() {return name;}public void setName(String name) {this.name = name;}public int getKeyCount() {return keyCount;}public void setKeyCount(int keyCount) {this.keyCount = keyCount;}}
2.7 屏幕类对象
package com.qfedu.b_computer;public class Screen {// 成员变量 Fieldprivate String name;private float size;// 构造方法 Constructorpublic Screen() {}public Screen(String name, float size) {this.name = name;this.size = size;}// Setter and getter methodpublic String getName() {return name;}public void setName(String name) {this.name = name;}public float getSize() {return size;}public void setSize(float size) {this.size = size;}}
2.8 电脑类对象
package com.qfedu.b_computer;public class Computer {/*** 键盘类对象,作为电脑类成员变量,Keyboard类是自定义类型*/KeyBoard keyBoard;/*** 屏幕类对象,作为电脑类成员变量,Screen类是自定义类型*/Screen screen;public Computer() {}/*** Computer类带有参数构造方法* * @param keyBoard 使用Keyboard类对象作为初始化参数* @param screen   使用Screen类对象作为初始化参数*/public Computer(KeyBoard keyBoard, Screen screen) {this.keyBoard = keyBoard;this.screen = screen;}/*** Setter方法,修改屏幕类对象数据,我们可以理解为换屏幕,这里需要的* 参数是一个Screen类对象*  * @param screen Screen类对象,新屏幕对象*/public void setScreen(Screen screen) {this.screen = screen;}/*** Setter方法,修改键盘类对象数据,这里可以理解为换键盘,需要的参数* 是一个新键盘类对象* * @param keyBoard Keyboard类对象*/public void setKeyBoard(KeyBoard keyBoard) {this.keyBoard = keyBoard;}public Screen getScreen() {return screen;}public KeyBoard getKeyBoard() {return keyBoard;}/*** 展示键盘和屏幕的属性*/public void show() {System.out.println("键盘品牌 : " + keyBoard.getName() + " 按键个数 : " + keyBoard.getKeyCount());System.out.println("屏幕品牌 : " + screen.getName() + " 屏幕尺寸 : " + screen.getSize());}
}
2.9 main方法
package com.qfedu.b_computer;public class MainProject {public static void main(String[] args) {// 进货,创建键盘类对象和屏幕类对象KeyBoard keyBoard = new KeyBoard("双飞燕", 104);Screen screen = new Screen("三星", 27F);// 使用键盘类对象和屏幕类对象创建一个Computer电脑类对象Computer computer = new Computer(keyBoard, screen);// 展示电脑键盘配置和屏幕配置computer.show();System.out.println("~~~~~换屏幕~~~~~");// 创建新屏幕类对象Screen screen2 = new Screen("ROG", 32F);computer.setScreen(screen2);computer.show();System.out.println("~~~~~换键盘~~~~~");// 创建新键盘类对象KeyBoard keyBoard2 = new KeyBoard("HHKB", 60);computer.setKeyBoard(keyBoard2);computer.show();}
}
2.10 多类合作总结
1. 方法参数或者返回值为自定义类对象类型。fixCar(Car car); 当前方法所需参数是Car类对象Computer(Keyboard keyboard, Screen screen); 当前构造方法所需参数是Keyboard类对象和Screen类对象【方法需要什么类型,我们给什么数据类型】2. 类和类之间是存在包含关系的!!!电脑 {键盘类对象;屏幕类对象;}自定义数据类型整合,包含关系是非常常见的!!!3. 从生活角度理解和分析代码!!!代码来自生活,最后反馈于生活!!!

3. 匿名对象

3.1 匿名对象是什么???
 匿名对象就是没有对象名字的对象。在创建对象的过程中Person p1 = new Person(); 真正意义上创建对象的语句是 【new Person();】p1 对象名,同时也是一个引用数据类型的变量,保存类对象在内存【堆区】空间首地址。匿名对象 new 构造方法();匿名对象不推荐直接调用或者赋值成员变量,有去无回!!!
3.2 匿名对象推荐使用方式
两种方式:1. 匿名对象直接调用类内的成员方法2. 匿名对象作为其他方法的参数【很常用】
package com.qfedu.d_anonymous;class SingleDog {public void test() {System.out.println("路见不平一声吼,你还没有女朋友~~~");}
}public class Demo2 {public static void main(String[] args) {// 匿名对象直接调用类内的成员方法new SingleDog().test();// 匿名对象直接作为方法的参数needSingleDog(new SingleDog());// 创建缓冲输入字节流对象,需要参数是字节流输入对象和文件对象// new BufferedInputStream(new FileInputStream(new File("D:/aaa/1.txt")));}public static void needSingleDog(SingleDog singleDog) {System.out.println("这是一个单身狗" + singleDog);}
}

【java初学】面向对象多态相关推荐

  1. 包机制、访问修饰符、Jar包 java初学 面向对象五

    包机制 问题:当定义了多个类的时候,可能会发生类名的重复问题. 在java中采用包机制处理开发者定义的类名冲突问题. 怎么使用java的包机制呢? 使用package 关键字. package 包名. ...

  2. 面向对象 java初学

    面向对象 万物皆对象 我们是怎么认识世界的? 人类从小就不断的接触到各种各类存在世界上的各种生物,然后通过事物的公共特性,将它们归类,所以以后就不会出现见到猫叫老虎.那么我们在现实生活中,是通过具体的 ...

  3. java面向对象多态特性

    一.多态的概念 多态是继封装,继承之后,面向对象的三大特性. 现实事物经常会体现出多种形态,如学生,学生是人的一种,则一个具体的张三同学既是学生也是人,即出现两种形态. java作为面向对象的语言,同 ...

  4. day8 Java学习(面向对象.多态接口)

    面向对象    多态: 概述:事物存在的多种形态.  多态前提: *要有继承关系 *要有方法重写 *要有父类引用指向子类对象. 成员变量访问:           编译看左边(父类),运行左边(父类) ...

  5. Java面向对象 ----多态

    java的第二部分 面向对象----多态 4.1面向对象的第三个特征: 多态定义: 多态可以理解为某一类事物的多种存在形态. 例如: 人 可以分为 男人 女人 动物 猫 狗 等 粮食 大米 小麦等 举 ...

  6. java面向对象解决兔子问题_7-Java面向对象-多态

    多态: 多种形态,面向对象的核心,封装和继承都是为多态而服务的. 位于最后也是最重要的. 本次课程围绕: 什么是多态? 多态在程序设计中的优势? 在Java中如何实现多态? 多态的概念 猫,狗,兔子都 ...

  7. 7.Java面向对象-多态

    7.Java面向对象-多态 一.多态的概述及其代码体现 A:多态概述某一个事物,在不同时刻表现出来的不同状态.举例: Cat c=new Cat();Animal a=new Cat();猫可以是猫的 ...

  8. java c 面向对象比较教程_c语言初学指针,对于java面向对象的初理解

    最近在看关于c语言的指针,学习下,发现指针原来运用理解成其实可以抽象出我们java的面向对象封装,地址--> 对象或变量,先看一段代码: public class Cat { public St ...

  9. java基础入门传智播客 源码_Java-_2020年版Java零基础视频教程(Java 0基础,Java初学入门)魔鬼讲师老杜出品...

    不会闲聊!!!不会扯淡!!!小UP只会分享与Java相关的学习资源 还记得那年带你Java入门的一声"吼"吗? B站目前播放量已经快到450多万播放量的Java零基础教程的创作者& ...

  10. java中的多态_Java中的多态

    多态与HoFs 朋友们好久不见啊,最近笔者同时在写脚本型语言--JavaScript,和工业级的面向对象语言--Java. 在写代码的同时呢,也会思考这些语言的不同.今天就拿 Java 中的多态,来谈 ...

最新文章

  1. 华为机考HJ6求质因子C语言解法
  2. B - Collisions
  3. python如何从一个dataframe提取相应的行组成一个新的dataframe_从Excel到Python:最常用的36个Pandas函数!最完整的Pandas教程!...
  4. SpringBoot集成七牛云-实现文件上传、下载、解决报错、详细案例
  5. 每天一道LeetCode-----根据先序遍历和中序遍历还原二叉树
  6. 飞机票应该如何选择更安全
  7. 我搜集的C++字符类型的相互转换
  8. 第二章 变量、数据类型和运算符
  9. android 代码设置 键盘适应_硬核软件,能在电脑上控制iPhone和Android手机
  10. 二十世纪最伟大的算法,你了解哪个?
  11. C++:类模板与模板类
  12. 修改windows XP/2000/2003用缩略图方式浏览图片时的默认尺寸
  13. 进入REST Core
  14. layui移动端适配_web前端-移动端适配方案
  15. VS2013 安装配置 C++ boost 库
  16. 不同VLAN间的通信
  17. Acrobat Pro DC 2022 Mac(全能PDF工具)完美兼容m1
  18. openstack nova后端使用ceph rbd(增加在线迁移live_migrate和快照snapshot功能)
  19. OOM框架AutoMapper基本使用(2)
  20. Web开发后端框架比较

热门文章

  1. GaussDB架构(中)
  2. 【读论文】DIVFusion: Darkness-free infrared and visible image fusion
  3. 【SPDK文件系统-Blob FS】
  4. 什么是创建对象java_java创建对象的几种方式分别是什么
  5. Android修改ro.debuggable 的四种方法
  6. 计算机软件研发的相关会计分录,研发专利技术会计分录怎么做
  7. SQL Server developer和enterprise有什么区别?以及各个版本的定义
  8. 网络对大学生影响的调查研究报告
  9. 生态 | 人大金仓与超聚变的多个产品完成兼容认证
  10. SpringBoot核心技术