当前位置: 首页 > news >正文

软件设计之Java入门视频(12)

软件设计之Java入门视频(12)

视频教程来自B站尚硅谷:

尚硅谷Java入门视频教程,宋红康java基础视频
相关文件资料(百度网盘)
提取密码:8op3
idea 下载可以关注 软件管家 公众号

学习内容:

该视频共分为1-717部分
本次内容涉及330-359
在写代码时,总是需要来回切换界面来看代码要求,这里推荐Snipaste,可以把截图以窗口形式放在屏幕上
记录内容:

  1. 代码块
  2. final 关键字
  3. 抽象类与方法
  4. 接口

1、代码块

1)作用:用来初始化类、对象
2)代码块如果有修饰的话,只能用static
3)分类:静态代码块非静态代码块
静态代码块
  a)内部可以有输出语句
  b)随着类的加载而执行,而且只执行一次
  c)静态代码块的执行要先于非静态代码块
非静态代码块
  a)内部可以有输出语句
  b)随着对象的创建而执行,每创建一个对象,就执行一次非静态代码块
  c)作用:可以在创建对象时,对对象属性等进行初始化

由父及子,静态先行

main方法作为程序入口(static),仍遵循由父及子规定,所以先1,4,再7
然后再执行父类Person中的代码块–>构造器;
随后转到子类Animal中执行代码块–>构造器;

package test;public class BlockTest {}class Person{static {System.out.println("1");}{System.out.println("2");}public Person(){super();System.out.println("3");}
}class Animal extends Person{static {System.out.println("4");}{System.out.println("5");}public Animal(){super();System.out.println("6");}public static void main(String[] args) {System.out.println("7");new Animal();}
}
}//输出顺序1 4 7 2 3 5 6

对象赋值顺序

1)默认初始化
2)显式初始化/在代码块中赋值 [看代码先后顺序]
3)构造器中初始化
4)通过对象.属性或对象.方法赋值
5)接口

final关键字

1)final可以用来修饰的结构:类、方法、变量
2)final用来修饰类:此类不能被其他类所继承
3)final用来修饰方法:此方法不能被重写
4)final用来修饰变量:“此时的变量”就称为一个常量
  a)final修饰属性:可以考虑赋值的位置:显式初始化、代码块中初始化、构造器中初始化
  b)final修饰局部变量:修饰形参时,需要给常量形参赋一个实参,并只能在方法内使用这个不能进行赋值的形参
5)static final用来修饰属性:全局常量

package test;public class OrderTest {final int WIDTH = 0;final int LEFT;final int RIGHT;{LEFT = 1;}public OrderTest(){RIGHT = 1;}public OrderTest(int m){RIGHT = m;}
}

抽象类与方法

抽象类
1)抽象类不能实例化
2)抽象类中一定有构造器,便于子类实例化时调用(设计:子类对象实例化全过程)
3)开发中,都会提供抽象类的子类,让子类对象实例化
抽象方法
1)抽象方法只有方法的声明,没有方法体
2)包含抽象方法的类一定是抽象类;抽象类可以不包括抽象方法
3)若子类重写了父类中的所有的抽象方法后,此子类方可实例化
4)若子类没有重写父类中所有的抽象方法,则此子类也是一个抽象类,需要使用abstract
注意点
1)abstract不能用来修饰:属性、构造器等结构
2)abstract不能用来修饰私有方法、静态方法、final的方法、final的类
静态方法与static不同用的解释:抽象类不能直接实例化,而静态方法不依赖于实例,可以直接通过类名调用。把一个方法同时定义为abstract和static在语义上是矛盾的,因为抽象方法需要实例化的子类来实现,而静态方法在没有实例时就可以调用

抽象类的匿名子类对象

//Person是抽象类
Person p = new Person;//这是无法执行的,因为抽象类无法造对象
//如果worker是Person子类
Worker worker = new Workder();  //有类的名字;有对象名字
Person p = new Person(){   //此时匿名子类的对象p 没有子类名字;有对象名字@Override //重写抽象方法public void eat(){}
}

4、接口

1)接口使用interface定义
2)Java中,类和接口是并列的两个结构
3)定义接口中的成员:
  a)JDK7及以前:只能定义全局常量(public static final书写时可省略不写)和抽象方法(public abstract)
  b)JDK8:除了定义全局常量和抽象方法之外,还可以定义静态方法与默认方法(略)
4)接口中不能定义构造器,意味着不能实例化
5) Java开发中,接口通过让类去实现(implements)方式使用
  a)如果实现类覆盖了接口中所有的抽象方法,则此实现类可以实例化
  b)如果实现类没有覆盖接口中所有的抽象方法,则该类仍为一个抽象类
6)Java类可以实现多个接口
  a)格式: class AA extends BB implements CC,DD,EE
7)接口与接口之间可以继承,可多继承
在这里插入图片描述

package test;public class InterfaceTest {public static void main(String[] args) {Fly fly = new Fly();fly.fly();}
}interface Flyable{//全局常量public static final int MAX_SPEED = 10;int MIN_SPEED = 0;//抽象方法public abstract void fly();
}class Fly implements Flyable{@Overridepublic void fly() {System.out.println("通过引擎起飞");}
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 玩转springboot之springboot使用外置tomcat进行运行
  • 缓存-缓存的使用与基本详解
  • Vue3从入门到精通(三)
  • Python实现Mybatis Plus
  • 常见反爬及应对
  • C# Socket
  • 多个tomcat同时使用 不设置CATALINA_HOME环境变量
  • Oracle 11.2.0.1升级到11.2.0.4并做rman备份异机恢复
  • 如何用Java写一个整理Java方法调用关系网络的程序
  • 银河麒麟V10 SP1 审计工具 auditd更新
  • 在linux系统centos上面安装php7gmp扩展
  • 【算法专题】双指针算法
  • rider使用libman
  • k8s-第六节-数据持久化
  • JVM(Java虚拟机)详解(JVM 内存模型、堆、GC、直接内存、性能调优)
  • 「面试题」如何实现一个圣杯布局?
  • 【面试系列】之二:关于js原型
  • canvas 五子棋游戏
  • css的样式优先级
  • Facebook AccountKit 接入的坑点
  • Perseus-BERT——业内性能极致优化的BERT训练方案
  • Puppeteer:浏览器控制器
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 构建工具 - 收藏集 - 掘金
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 浅谈Golang中select的用法
  • 收藏好这篇,别再只说“数据劫持”了
  • 算法之不定期更新(一)(2018-04-12)
  • 消息队列系列二(IOT中消息队列的应用)
  • 一个SAP顾问在美国的这些年
  • 机器人开始自主学习,是人类福祉,还是定时炸弹? ...
  • # Redis 入门到精通(一)数据类型(4)
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • #Datawhale X 李宏毅苹果书 AI夏令营#3.13.2局部极小值与鞍点批量和动量
  • $con= MySQL有关填空题_2015年计算机二级考试《MySQL》提高练习题(10)
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (k8s)Kubernetes 从0到1容器编排之旅
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (汇总)os模块以及shutil模块对文件的操作
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (十六)、把镜像推送到私有化 Docker 仓库
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (四)js前端开发中设计模式之工厂方法模式
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • (转)VC++中ondraw在什么时候调用的
  • ***详解账号泄露:全球约1亿用户已泄露
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
  • .NET 读取 JSON格式的数据
  • .NET 通过系统影子账户实现权限维持
  • .net 验证控件和javaScript的冲突问题
  • .NET正则基础之——正则委托