知识点:

综合案例

一、综合案例

1.1 练习 1:设计汽车示例

创建 Java 工程: DAY05
创建包: cn.tedu. oopextends
创建类: Test1_ExtendsDesignCar.java
package cn.tedu.oopextends;
/**
*@author MBH:
*@version 创建时间:2022年7月10日 下午4:41:34
*/
/**本类用于测试继承设计汽车综合案例*/
//分析:
//提取共性:生成汽车父类
//属性:颜色 型号
//方法:启动行为 停止行为
//具体事物:宝马汽车 奥迪汽车—继承汽车父类,享有父类的共有属性和方法
public class Test1_ExtendsDesignCar {public static void main(String[] args) {//3.1创建父类对象进行测试Car c = new Car();c.run();c.stop();//3.2创建子类对象进行测试BMW b = new BMW();b.run();b.stop();//3.3创建子类对象进行测试Audi a = new Audi();a.run();a.stop();}}
//0.抽取共性来创建汽车父类
class Car{//定义属性--特征String bround;//汽车品牌String color;//汽车颜色//定义方法--功能public void run() {System.out.println("汽车启动");}public void stop() {System.out.println("汽车停止");}
}
//1.创建宝马汽车类,继承汽车类,继承后,子类具有父类的功能
class BMW extends Car{//4.如果想要修改父类原有的功能:--方法的重写//4.1重写后,父类的原有功能没有备修改,改的是子类自己的功能public void run() {//4.2 super应用在子类中,表示父类对象的一个引用Car super = new Car();super.run();System.out.println("BMW汽车启动....起步快!");}
}
//2.创建奥迪汽车类,继承汽车类,继承后,子类具有父类的功能
class Audi extends Car{public void stop() {System.out.println("Audi汽车停止...刹车灵!");}
}

二、static

2.1 概念

        是 java 中的一个关键字
        用于修饰成员(成员变量和成员方法)

2.2 特点

        1) 随着类的加载而加载,静态资源也叫做类资源
        2) 只加载一次,就会一直存在,直到类消失就一起消失了
        3) 优先于对象加载
        4) 被所有对象所共享
        5) 可以直接被类名调用

2.3 练习 2:static 入门案例

创建 Java 工程: DAY05
创建包: cn.tedu. oopstatic
创建类: Test2_ StaticDemo.java
package cn.mbh.oopstatic;
/**
*@author MBH:
*@version 创建时间:2022年7月10日 下午5:00:48
*/
/**本类用于测试static静态的入门案例*/
public class Test2_StaticDemo {public static void main(String[] args) {//3.创建对象进行测试/**3.静态资源可以通过类名直接调用*//**4.静态资源是优先于对象加载的,比对象先加载进入内存,没对象也可以直接被类名调用*/Student s =   new Student();s.study();//4.通过类名直接调用静态资源进行测试System.out.println(Student.name);Student.study();//5.测试多个队形访问静态资源/**5.静态资源可以被多个对象共享*/Student s2 = new Student();System.out.println(s2.name);System.out.println(Student.name);}}
//1.创建Student类
class Student{//2.定义属性与方法/**1.使用static关键字可以将普通资源修饰成静态资源*//**2.static可以用来修饰成员变量/方法,一般写在权限修饰符之后*/static String name = "韭菜妃子";static public void study() {System.out.println("别闹,我学java呢~");}
}

2.4 练习 3:static 静态调用关系

创建 Java 工程: DAY05
创建包: cn.tedu. oopstatic
创建类: Test3_ Static1.java
package cn.mbh.oopstatic;
/**
*@author MBH:
*@version 创建时间:2022年7月10日 下午5:14:40
*/
/**本类用于测试静态的调用关系*/
//总结:
//1.静态只能调用静态资源
//2.非静态既可以调用静态,也可以调用非静态
public class Test3_Static1 {public static void main(String[] args) {}}
//1.创建Teacher类
class Teacher{//1.1定义普通资源String name;public void teach() {/**1.普通资源能否调用静态资源?--可以!!!*/eat();//普通资源可以调用静态方法System.out.println(age);//普通资源可以调用静态属性System.out.println("teach()....");}//1.2定义静态资源static int age;//定义静态属性static public void eat() {//定义静态方法/**2.静态资源能否调用普通资源?--不可以!!!*///System.out.println(name);//teach();静态方法不可以调用普通方法System.out.println("eat()....");/**3.静态资源能否调用静态资源?--可以!!!*/System.out.println(age);//静态资源可以调用静态属性study();//静态资源可以调用静态方法}public static void study() {System.out.println("study()....");}}

三、静态代码块、构造代码块、局部代码块

3.1 静态代码块格式

static {}
静态资源随着类的加载而加载,并且只被加载一次,一般用于项目的初始化

3.2 三种代码块的比较

        1) 静态代码块:在类加载时就加载,并且只被加载一次,一般用于项目的初始化
        2) 构造代码块:在创建对象时会自动调用,每次创建对象都会被调用,提取构造共性
        3) 局部代码块:方法里的代码块,限制局部变量的范围

3.3 练习 4:几种代码块的关系

创建 Java 工程: DAY05
创建包: cn.tedu. block
创建类: Test4_Block2.java
package cn.mbh.block;
/**
*@author MBH:
*@version 创建时间:2022年7月10日 下午5:23:38
*/
/**本类用于测试代码块之间的关系*/
//1.代码块之间的执行顺序:静态代码块 --> 构造代码块 --> 构造方法 --> 局部代码块
//2.为什么是这样子的顺序呢?
//3.原因:
//3.1)静态代码块优先于对象加载,是随着类的加载就会第一时间加载进入内存,并且一直存在
//3.1.1)专门用来完成一些需要第一时间加载并且只记在一次的资源
//3.2)构造代码块是在创建对象时才会触发,专门用来提取构造方法的共性
//3.3)局部代码块是在方法调用时才会触发,专门用来控制变量的作用范围
public class Test4_Block2 {public static void main(String[] args) {//7.创建对象进行测试/**1.在创建对象前,会自动执行静态代码块,而且此代码块只加载一次*//**2.在创建对象时,会自动调用构造代码块和构造方法*/Person p = new Person();/**3.当调用方法时,如果方法中有局部代码块,才会触发局部代码块*/p.study();System.out.println("-----------------我是一个无情的分割线-----------------------");//8.再创建一次对象进行测试Person p2 = new Person();//再去创建对象,静态代码块也不会再次加载了p2.study();}}
//1.创建Person类
class Person{//2.创建静态代码块/**位置:类里方法外 + 触发节点:随着类的加载而加载,只加载一次 */static {System.out.println("我是静态代码块~");}//3.创建构造代码块/**位置:类里方法外 + 触发节点:创建对象时 */{System.out.println("我是构造代码块");}//4.创建构造方法public Person() {System.out.println("我是无参构造方法~");}//5.创建普通方法public void study() {System.out.println("我是普通方法~");//6.创建局部代码块/**位置:方法里 + 触发节点:调用此方法时 */{System.out.println("我是局部代码块");}}
}

四、final

4.1 概念

        1) 是 java 提供的一个关键字
        2) final 是最终的意思
        3) final 可以修饰类,方法,成员变量

4.2 特点

        1) 被 final 修饰的类,不能被继承
        2) 被 final 修饰的方法,不能被重写
        3) 被 final 修饰的变量是个常量,不能被改变
        4) 常量的定义形式:final 数据类型 常量名 = 值

4.3 练习 5:final 入门案例

创建 Java 工程: DAY05
创建包: cn.tedu. oopfinal
创建类: Test5_FinalDemo.java
package cn.mbh.oopfinal;
/**
*@author MBH:
*@version 创建时间:2022年7月10日 下午5:33:23
*/
/**本类用于测试final的入门案例*/
public class Test5_FinalDemo {public static void main(String[] args) {//5.创建子类对象进行测试Son4 s = new Son4();System.out.println(s.name);//s.name="打工人";//The final field Father4.name cannot be assigneds.eat();}}
//1.创建父类
/**1.final表示最终,可以用来修饰类,那么被final修饰的类无法被继承,也就是没有子类--最终类*/
class Father4{//3.创建成员变量/**2.final可以修饰成员变量,被final修饰的变量值不可以被修改--常量*/final String name = "干饭人";//4.创建成员方法/**3.final可以修饰成员方法,但是被final修饰的方法是最终实现,子类无法重写*/final public void eat() {System.out.println("Father4...干它三碗大米饭~");}
}
//2.创建子类
class Son4 extends Father4{//子类重写父类的eat()// public void eat() {//Cannot override the final method from Father4// System.out.println("Son4...下雪了去吃火锅吧~");// }
}

五、多态

5.1 概念

        多态指同一个实体同时具有多种形式
        它是面向对象程序设计(OOP )的一个重要特征。
        主要是指同一个对象,在不同时刻,代表的对象不一样,指的是对象的多种形态。
        好处是:可以把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出 通用的编程,统一调用标准。
        水果有两种形态:水果和苹果,不关心买回来的是苹果还是西瓜,只要是水果就行
class Animal{//1. 定义父类 Animal
        ....
}
class Cat extends Animal{//2. 定义子类 Cat 继承 Animal
        ....
}
main(){
        //3.创建子类对象
        Cat c = new Cat();//小猫是小猫
        Animal a = new Cat();//小猫是小动物
}

5.2 特点

        1) 多态的前提 1:是继承
        2) 多态的前提 2:要有方法的重写
        3) 父类引用指向子类对象,如:Animal a = new Cat();
        4) 多态中,编译看左边,运行看右边

5.3 练习 6:多态入门案例

创建 Java 工程: DAY05
创建包: cn.tedu. oop
创建类: Test6_MoreTypeDemo.java
package cn.mbh.opp;
/**
*@author MBH:
*@version 创建时间:2022年7月10日 下午5:43:12
*/
/**本类用于测试多态的入门案例*/
public class Test6_MoreTypeDemo {public static void main(String[] args) {//5.创建父类对象进行测试Animal a = new Animal();a.eat();//小动物Animal吃啥都行~~~//6.创建子类对象进行测试Cat c = new Cat();c.eat();//小猫Cat爱吃小鱼干~~~c.jump();//!!!7.创建多态对象进行测试/**口诀1 : 父类引用 指向 子类对象*//**口诀2 : 编译(保存)看左边,运行(测试)看右边*/Animal a2 = new Cat();//eat()是使用的父类的声明,但是使用的是子类的实现方式a2.eat();//小猫Cat爱吃小鱼干~~~/**多态的出现:是为了统一调用的标准,向父类看齐,父类提供的功能才能用,子类特有的功能用不了*///a2.jump();}}
//1.创建父类
class Animal{//3.定义父类中的成员方法public void eat() {System.out.println("小动物Animal吃啥都行~~~");}
}
//2.创建子类
class Cat extends Animal{//4.重写父类中的方法--对父类的代码做修改//重写的规则:方法签名保持一致 + 子类权限修饰符 >= 父类的权限修饰符public void eat() {System.out.println("小猫Cat爱吃小鱼干~~~");}public void jump() {//8.定义一个子类特有的方法System.out.println("小猫Cat跳的老高了~~~");}}

Java面向对象基础-4相关推荐

  1. java面向对象课件_《JAVA面向对象基础》PPT课件.ppt

    <<JAVA面向对象基础>PPT课件.ppt>由会员分享,可在线阅读,更多相关<<JAVA面向对象基础>PPT课件.ppt(68页珍藏版)>请在人人文库 ...

  2. 【Java】Java学习笔记(2)——Java面向对象基础作业函数题

    本人私人博客:Megalomania,大部分文章会现在博客上传,有不足之处欢迎指正. 学校小学期Java课程的练习题,留个档便于以后需要时候有例子可以回忆,写的烂的地方请多多包含 1.求两个数值之和 ...

  3. java小游戏:蜡笔小新!!!基于JAVA面向对象实现的跑酷类游戏(小新跑酷)(简单小游戏,仅仅使用Java面向对象基础实现(附上源码))

    一起来看一下蜡笔小新,很好看的,解压!!!!!!!!!!!!!!! 由于Java面向对象基础的游戏,有一定的局限,但是我觉得这款的可玩性已经很高了,话不多说一起来看游戏: 游戏界面,点击空格跳跃来躲避 ...

  4. Java面向对象基础学习笔记(构造、重载、继承、多态、抽象类、接口、模块)

    Java面向对象编程包含哪些内容? 怎么理解面向对象编程? 现实生活中,我们定义了"人"的抽象概念,这就是类class,生活中的每一个具体的人就是实例instance. class ...

  5. Java 面向对象基础和进阶

    3-2 面向对象基础 面向对象概述 课堂笔记 面向对象是一种编程思想,是相对于面向过程的概念而言的. 面向对象强调把数据和方法组织成一个整体来看待,将世间万物抽象成一个个对象来对待. 面向对象与面向过 ...

  6. java面向对象基础

    java数组 文章目录 java面向对象初步认识 软件开发 面向对象和面向过程 对象 对象和类 类的定义 类和对象的练习 类的方法 类的方法的练习 java面向对象初步认识 软件开发 软件开发分为了结 ...

  7. Java面向对象基础接口和抽象的理解

    第一,抽象类: 我们都知道,在面向对象的领域中,一切都是一个对象,所有的对象都是用类来描述的,但不是所有的类都是用对象来描述的.如果一个类没有足够的信息来描述一个特定的对象,并且需要其他特定的类来支持 ...

  8. Java面向对象——基础2 封装、继承、多态

    目录 Java基础知识图解 一.方法的重载 1.1重载是什么? 1.2重载的例子 1.3判断重载练习 1.4重载小结 1.5可变个数的形参 ​说明: 二.方法参数的值传递机制 2.1基本数据类型的参数 ...

  9. java面向对象基础代码_Java基础语法——面向对象(1)

    一 面向对象 1.1 什么是面向过程.面向对象 面向过程与面向对象都是我们编程中,编写程序的一种思维方式. 面向过程的程序设计方式,是遇到一件事时,思考"我该怎么做",然后一步步实 ...

  10. java面向对象基础复习

    对java基础的一个复习总结吧. 1.继承:通过使用关键字extends,子类可以继承父类所有的方法和属性,但是无法使用 private(私有) 的方法和属性,一次只能继承一个父类. 2.重写:重写( ...

最新文章

  1. R语言|又来一个气泡图
  2. win10 安装xilinx 14.7 之后打开new project 奔溃解决方法
  3. opengl源码 实现无缝切换图片过场_手把手讲解 Android hook技术实现一键换肤
  4. 如何解决SVN Commit failed (details follow): Access denied
  5. MySQL(2)数据库管理
  6. 阿里云李刚:下一代低延时的直播CDN
  7. Mac 10.12下安装python3环境
  8. Vertica数据库系列:这几天踩过时间函数的坑
  9. oracle 回滚空间查询,Oracle回滚段空间回收步骤
  10. 6_Selenium Excel参数化
  11. 编译Caffe错误:libpython3.5m.a(abstract.o): relocation R_X86_64_32S against
  12. ArrayList 初学小结!
  13. 基于RV1126平台imx291分析 --- 统计已注册的设备信息
  14. 【HTML5】创造一款成功HTML5游戏的完整指南
  15. 最简单的dubbo教程-快速入门
  16. 振动试验设备的选择和使用
  17. ps制作图标时的尺寸
  18. python求平均值_如何用python求平均值
  19. 如何让cmd全屏显示?
  20. Linus 大神的在家办公经验(他也撸猫)

热门文章

  1. 文献解读|拷贝数增加临床意义分析指导手册
  2. 密码学基础(二)算法和密钥
  3. redhat 安装redash
  4. Tensorflow YOLO代码解析(1)
  5. 腾讯安全SOC+荣获“鑫智奖”,助力金融业数智化转型
  6. Xpath安装——程序包无效解决
  7. springboot解析不到docker中含有点号的环境变量
  8. 胡学乱想----前端知识点(css)
  9. 手机电子邮件服务器是什么,什么是电子邮件服务器名?在哪找到接收邮件服 – 手机爱问...
  10. Vue中export和export default的区别和用法