Java随堂笔记

代码中出现的高频单词

Type  类型
mismatch 不匹配
switch 转换
local  局部
variable  变量
initialized  初始化  赋值
resolved 引用 使用
reference 引用调用
Duplicate  重复的 
Auto-generated 自动生成
Unreachable code 不可到达 代码
declared 声明 定义
 access权限
already 已经
defined 定义
scope 范围

inherit 继承

分支结构

单分支
if(判断条件){
      代码
}

多分支1
if(判断条件){
     满足条件代码1
}else{
     不满住条件代码2
}

嵌套分支
if(判断条件1){
      代码
}else if(判断条件2){
      代码
}else{
       代码    
}

switch (valuce){
case   valuce1  sout();break;
case   valuce2  sout();break;
case   valuce3  sout();break;
case   valuce4  sout();break;
case   valuce5  sout();break;
default sout();
}

循环结构

for(开始条件 ;循环条件 ;更改条件){
    循环体;
}

典型案例:冒泡排序

方法结构

类型名称     字节空间      默认值       取值名称

方法的格式:

修饰符   返回值类型    方法名(参数列表){
                             方法体

}

面向对象的三大特征

封装

封装:把相关的数据封装成一个“类”组件

  1. 封装可以提高程序的安全性
  2. 封装可以让资源按照我们预先规定的方式来操作

继承:子类共享父类的属性和方法
多态:增强软件的灵活性和重用性

TIPS:栈和队列指的是一种数据的结构
栈:先进后出(FILO –First In Last Out)
队列:先进先出(FIFO– First In First Out)

Phone p =new Phone();这句代码,在内存中会发生什么/p>

new Phone();在栈里栈内存中开辟一块空间并提供一个地址值   Phone p在栈内存中开辟一块空间并指向对应地址值
1.在栈内存中开辟一块空间,存放引用数据类型Phone类型的变量p
2.在堆内存中开辟一块空间,存放Phone类型的对象
3.要给这个对象进行初始化,比如String brand = null;
4.当对象准备好以后,会生成一个唯一的地址值,然后将此地址值交给引用数据类型的变量p来保存
5.如果以后想要操作此对象的各种资源,可以通过p变量保存的地址值找到该对象,比如p.call(); p.price=5.22;

已Phone p =new Phone();为例
new Phone();为匿名对象,在在堆中
Phone p ;对象名为怕,在栈中

一个java文件中只有一个公共类

属性封装的步骤:

1.使用private封装属性
2.提供被封装属性对应的方法
getXXX()–获取属性值 
setXXX()–修改属性值
方法封装的步骤:
1.使用private封装方法
2.可以在本类的公共方法里调用这个私有方法分功能

构造函数/构造方法

1.没有返回值,与本类类同名的
2.作用:用于创建对象
3.执行时机:每次创建对象都会执行构造方法
4.1无参构造:默认存在。但是一旦提供了其他的构造方法
默认的无参构造会被覆盖,所以需要手动提供

4.2含参构造:带有参数的构造方法
 4.3全参构造:带有本类中所以的参数;

构造代码块

局部代码块

This

1..当本类的成员变量与局部同名时,使用this.成员变量名指定成员变量
2.this();–调用本类的无参构造
  this(参数);–调用本类的有参构造
  注意:必须写在第一行
           不能来回调用,是单向的 (不然会造成递归死循环)

继承

继承的好处
提高了代码的复用性(多个类相同的成员可以放在同一个类中)
提高了代码的维护性(如果方法的代码需要修改,只修改一处即可)
继承的坏处
继承让类与类建立了关系,类的耦合性增强
当父类发生变化时,子类实现也不得不跟着变化,削弱了子类的独立性

关键字Final

关键字static

静态方法是随着类的加载而加载的,普通方法是通过类的实例化加载的

而类先与对象加载,则必然静态资源不能调用普通资源(类加载的时候对象还没有被创建)

多态

多态是面向对象程序设计(OOP)的一个重要特征,

同一个实体同时具有多种形式,即同一个对象,在不同时刻,代表的对象不一样,指的是对象的多种形态。

可以把不同的子类对象都当作父类来看,进而屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,统一调用标准。(屏蔽子类对象之间的差异,把不同的子类对象都当作父类来看

异常

异常层次结构中的根是Throwable
Error:目前我们编码解决不了的问题
Exception:异常
编译异常:未运行代码就报错了,强制要求处理
运行时异常:运行代码才报错,可以通过编译,不强制要求处理

抽象

Java中可以定义被abstract关键字修饰的方法,这种方法只有声明,没有方法体,叫做抽象方法.
Java中可以定义被abstract关键字修饰的类,被abstract关键字修饰的类叫做抽象类

  1. 如果一个类含有抽象方法,那么它一定是抽象类
  2. 抽象类中的方法实现交给子类来完成
  3. /**抽象类不可以实例化!!!–创建对象*/

抽象
1.被Astract修饰的方法是抽象方法,抽象方法没有方法体
2.一旦一个类中包含抽象方法,这个类必须被声明为抽象类
3.如果子类继承抽象父类,有两只解决方案
1)抽象子类躺平,实现一部分/不实现父类中的抽象方法
2)普通子类,还债,实现抽象类中的所有抽象方法
4.抽象类不可以被实例化
5抽象类中是有构造函数父只不过不是为了自己使用,而是为了子类创建对象时使用
6.抽象类中可以定义成员变量成员常量
7.抽象类中的方法可以全普/全抽/半普半抽
8.如果一个类不想被实例化,那么这个类可以被声明成抽象类
9.abstract关键字不可以与private          static             final公用

抽象:
从理解:对外提供统一的入口   

接口

与之前学习过的抽象类一样,接口( Interface )在Java中也是一种抽象类型,接口中的内容是抽象形成的需要实现的功能,接口更像是一种规则和一套标准.

Java随堂笔记

接口的特点

通过interface关键字来定义接口
通过implements让子类来实现接口
接口中的方法全部都是抽象方法(JAVA8)
可以把接口理解成一个特殊的抽象类(但接口不是类!!!)
类描述的是一类事物的属性和方法,接口则是包含实现类要实现的方法
接口突破了java单继承的局限性
接口和类之间可以多实现,接口与接口之间可以多继承
接口是对外暴露的规则,是一套开发规范
接口提高了程序的功能拓展,降低了耦合性

接口的特点
1.我们使用interface关键字定义接口
2.我们使用implements关键字建立接口实现类与接口的实现
接口是父级。接口实现类是子类
3.接口实现类需要实现接口的所有抽象方法,才能变成一个普通子类
4.接口不能实例化
5.接口没有构造函数,实现类使用的super()是父类的无参构造
如果没有明确指定父类,super()代表的是Object的无参构造
6.接口中都是抽象方法,会默认拼接public abstract
接口中都是常量,会默认拼接public static final
8.接口不是类
9.接口是用来指定规则的:有哪些功能法有参数吗返回只值吗br> 具体实现交给接口的实现类来完成

总结:接口里是没有构造方法的

如果一个类没有明确指定它的父类,那么它默认继承顶级父类Object,调用的super()是Object的无参构造

接口里没有成员变量,都是常量。所以,你定义一个变量没有写修饰符时,默认会加上:public static final

接口里的方法,默认都是抽象的,方法上会默认拼接public abstract。例如:public abstract void save();

面试解答题
类与接口的关系
1.类与类的关系
继承关系,只支持单继承
比如A是父类,B是子类,B具备A的所有功能
如果B对A的功能不满意,可以重写(两同 两下)

2.类与接口的关系
实现关系,可以单实现 也可以多实现
class A implements B,C{}
A是实现类,B和C是接口,A需要实现BC接口的所有抽象方法,否则A就是一个抽象类、

3.接口与接口的关系
继承关系  可以单继承 也可以多继承
interface A extends B,C{}
A B C 都是接口,A是子接口,具有B C父接口的所有功能(抽象方法)
class X implements A{}
X实现类需要实现A接口,以及A接口继承自B C接口的所有抽象方法,否则就是抽象类

class O extends A implemets B,C{}
其中O是实现类,也是A的子类 同时拥有A的所有功能,并且需要实现BC的所有功能

接口与抽象类的区别
1.接口是用 interface定义的类型
  抽象类是用class定义的类型
2.接口中的方法都是抽象方法
  抽象类中的方法不做限制
3.接口当中都是静态变量
   抽象类中可以写普通的成员变量
4.接口中没有构造方法,不可以实例化
   抽象类中有构造方法,但是也不可以实例化
5.接口是先天设计的结果,抽象是后天重构的结果
6.接口可以多继承,抽象类只能单继承

内部类

如果一个类存在的意义就是为指定的另一个类,可以把这个类放入另一个类的内部。
就是把类定义在类的内部的情况就可以形成内部类的形式。
A类中又定义了B类,B类就是内部类,B类可以当做A类的一个成员看待:

Java随堂笔记

特点:

1) 内部类可以直接访问外部类中的成员,包括私有成员

2) 外部类要访问内部类的成员,必须要建立内部类的对象

3) 在成员位置的内部类是成员内部类

4) 在局部位置的内部类是局部内部类

总结1:

1.成员内部类被Private修饰以后,无法被外界直接创建创建对象使用

所以可以创建外部类对象,通过外部类对象间接访问内部类的资源

2.静态资源访问时不需要创建对象,可以通过类名直接访问

访问静态类中的静态资源可以通过”. . . ”链式加载的方式访问

3.匿名内部类属于局部内部类,而且是没有名字的局部内部类,通常和匿名对象一起使用


  1. public class TestInner5 {
  2. public static void main(String[] args) {
  3. //3.创建了接口1对应的匿名对象,实现了接口中的方法,调用了实现的方法
  4. new Inter1() {
  5. @Override
  6. public void save() {
  7. System.out.println("保存");
  8. }
  9. @Override
  10. public void get() {
  11. }
  12. }.save();
  13. new Inter2() {
  14. @Override
  15. public void drink() {
  16. System.out.println("一人饮酒醉");
  17. }
  18. }.play();
  19. new Inter3().study();
  20. }
  21. }
  22. //创建接口
  23. interface Inter1{
  24. void save();
  25. void get();
  26. }
  27. //创建抽象类
  28. abstract class Inter2{
  29. public void play(){
  30. 来源:白木松

    声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年11月6日
下一篇 2021年11月6日

相关推荐