java基础

时间:2020-8-13    作者:z    分类: 开发日记


java?,jvav?

 

近期学习java的一些笔记.....整理。

 

面向对象编程的本质:

以类的方式组织代码,以对象的组织(封装)数据

三大特性:封装,继承,多态

类是对象的模板

一个类里只有属性和方法

一个项目应该只存放一个main方法

this.xxx(this指代当前类)

用new来具体实例抽象类

构造器=构造方法

  1. 和类名相同
  2. 没有返回值

作用:

  1. new 本质在调用构造方法
  2. 初始化对象值

注意点:

  1. 定义有参构造之后,如果想使用无参构造,显示的定义有一个无参的构造

快捷键Alt+insert

用new关键字,本质在调用构造器
一旦定义了有参构造,无参就必须显示定义,通过关键字调方法。
有参构造=重载

内存

静态方法 static:和类一起加载的 随时可以调用,不用new

栈存放:变量的引用,方法
堆存放:创建出来的对象

封装>>>>private:

作用:

  1. 提高程序安全性,保护数据
  2. 隐藏代码的现实细节
  3. 统一接口
  4. 系统的可维护性增加了

继承extends

是类与类之间的关系

所有的类都默认直接或间接继承object类(private的东西无法被继承)

super.xxx; xxx为父类的东西   子类中有隐藏的super();且必须放在第一行。

子类默认调用父类的无参构造

注意:

  1. super调用父类的构造方法,必须在构造方法的第一个
  2. super必须只能出现在子类的方法或者构造方法中
  3. super和this不能同时调用构造方法

vs this

代表的对象不同

  • this:本身调用这个对象
  • super:代表父类对象的应用

前提

  • this:没有继承也可以使用
  • super:只能在继承条件才可以使用

构造方法

  • this();本类的构造
  • super();父类的构造

重写:@Override//注解,功能注释

  1. 重写都是方法的重写,与属性无关
  2. 重写只能与非静态方法有关
  3. 重写前提要有继承关系,并且是子类重写父类的方法
  4. 方法名必须相同
  5. 参数列表必须相同
  6. 修饰符可以扩大:public>>Protected>private
  7. 抛出异常:范围可以被缩小,但不能扩大:ClassNotFondException--->Exception(大)
  8. 重写,子类的方法名和父类必须要一致;方法体不同。

为什么重写?

父类的功能,子类不一定需要,或者不一定满足。

不能被重写的方法:

  1. static 方法,属于类,不属于实例
  2. final 常量
  3. private 方法

多态:

*即同一个方法可以根据发送对象的不同而采用多种不同的行为方式。

*一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多。

例如一个类:

....Student extends Person(){
}

//Student 能调用的方法都是自己的或者继承父类的

Student s1=new Student();

//Person 父类型,可以指向子类,但是不能调用子类的独有方法

Person s2=new Student();//父类的引用指向子类的对象。

Object s3=new Student();

注意事项:

  1. 多态是方法的多态
  2. 父类和子类,有联系    类型异常转换! ClassCastException!
  3. 存在条件:继承关系,方法需要重写,父类引用指向子类对象!Father f1= new Fon();

instanceof //判断是否为父子关系

 X instanceof Y;//有父子关系则为true,否则为false

转换:

高转低:((子类)父类的引用名.方法)

子类转换为父类,可能会丢失自己本来的一些方法

注:把子类转化为父类,向上转型;把父类转化为子类,向下转型(强制转换)

      有final修饰的类无法被继承

作用:

方便方法的调用,减少重复的代码,简洁

抽象类:abstract 

类的extends:单继承  (接口可以多继承)

抽象方法,只有方法名字,没有方法的实现。

抽象类的是所有方法,继承它的子类都必须要实现它的方法,除非,,接口?

特点:

  1. 不能new这个抽象类,只能靠子类的继承区实现它:约束!
  2. 抽象类可以有普通方法,抽象的方法必须在抽象类中。
  3. 抽象的抽象:约束。。

提问:

//存在的意义?

//不能new,存在构造器吗?

作用:

提高开发效率。。

接口:

声明关键字interface。

特点:

  • 只有规范,自己无法写方法,专业的约束!约束的实现分离:面向接口编程。
  • 接口就是规范,定义的是一组规则,体现“如果你是.....则必须能......”的思想。
  • 接口的本质是契约,就像法律,制定好就必须遵守。

注意:

  • 接口中的所有定义的方法其实都是抽象的 public
  • 接口都需要实现类:类实现接口:public class (接口名)Impl implements 接口名{}
  • 实现了接口的类,就需要重写接口中的方法。
  • 利用接口实现多继承。(伪多继承)

总结:

  1. 约束
  2. 定义一些方法,让不同的人实现。
  3. 方法都是public abstract
  4. 常量都是public static final
  5. 接口不能被实例化~,接口中没有构造方法(构造器)
  6. implement可以实现多个接口。
  7. 实现接口必须要重写接口中的方法。

内部类:类中类。

*内部类可以获取外部类的私有(private)属性。

*一个java类中可有多个class类,只能有一个public class类。

*局部内部类:方法中的类。

异常和错误

异常:Exception

错误:Error

Error类对象由Java虚拟机生成并抛出,大多数错误与代码编写者所执行的操作无关。

异常的处理:

五个关键词:try,catch(捕获),finally(最后处理),throw,throws

【try-catch-finally】中,try和catch一定要有,finally可以不要。

catch(想要捕获的异常类型!)

要捕获多个异常,从小到大。idea快捷键Ctrl+Alt+T

throws在方法体主动抛出异常。

【try-catch-finally】作用

能够让程序异常时也能够执行。

异常的小结

*处理运行时异常,采用逻辑去合理规避同时辅助try-catch处理。

*对于不确定的代码,也可以加上try-catch,处理潜在的异常。

*尽量添加finally语句块去释放占用的资源。

=================================================================

 

 

 201487113353.jpg

 

 

标签: 开发日记


评论:

一帆风顺 2020-08-15 23:29