Java基础0308

笔记


类与对象

类是封装对象的属性和行为的载体,反过来说具有相同属性和行为的一类实体被称为类。类的定义如下:

  1. 类是相同或相似对象的一种抽象,是对象的一个模板,它描述一类对象的行为和状态。
  2. 类是具有相同属性和方法的对象的集合。

类是对象的抽象,对象是类的具体

一个类可以包含以下类型变量:

  1. 局部变量:在方法、构造方法或语句块中定义的变量叫局部变量,方法结束后变量就会自动销毁。
  2. 成员变量:成员变量是定义在类中,方法体之外的变量。
  3. 类变量:也叫静态变量,声明在类中,方法体之外,static类型。

PS

  1. 局部变量的作用域仅限于定义他的方法内。而成员变量的作用域在在整个类内部都是可见的。
  2. 同时在相同的方法中,不能有同名的局部变量;在不同的方法中,可以有同名的局部变量。
  3. 成员变量和局部变量同名是,局部变量具有更高的优先级。

构造方法

  1. 构造方法的名称和类名相同,且没有返回值。
  2. 如果在定义类的时候没有写构造方法,系统会默认生成一个无参构造方法,这个构造方法什么也不会做。
  3. 当有指定的构造方法是,系统就不会再添加无参构造方法了。
  4. 构造方法的重载:方法名相同,但参数不同的多个方法。

static

静态成员或方法都可以直接调用


final

  1. final修饰类,则该类不允许被继承,为最终类
  2. final 修饰方法,则该方法不允许呗覆盖(重写)
  3. final 修饰属性,则该类的属性不会被进行隐式的初始化或在构造方法中赋值(选其一)
  4. final 修饰变量,则该变量的值只能赋一次值,即常量。

封装

封装就是隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别。


继承

继承可以看成是类与类之间的衍生关系。
extends(继承除开private方法和属性)

  • 子类拥有父类除了private以外的所有属性和方法
  • 子类可以拥有自己的属性和方法
  • 子类可以重写实现父类的方法
  • Java中的继承是单继承,一个类只有一个父类

super

  1. 访问父类的属性 super.属性名
  2. 访问父类方法
  3. 子类构造方法需要调用父类的构造方法时,在子类的构造方法体里最前面的位置:super()

方法重载

方法重载是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数的类型或参数的个数。方法重载一般用于创建一组任务相似但是参数不同的方法。

规则:

  • 方法中的参数列表必须不同。
  • 访问权限,返回值类型和抛出异常都不同不能实现重载
  • 重载方法中允许抛出不同的异常
  • 可以有不同的返回值类型,但是参数列表必须不同
  • 可以有不同的访问修饰符

方法重写

子类可以继承父类的方法,但如果子类对父类的方法不满意,想在里面加入适合自己的一些操作时,就需要将方法进行重写。
ps:在方法重写时要注意,重写的方法一定要与原父类的方法语法保持一致,比如返回值类型,参数类型以及个数,和方法名都必须一致。


多态

多态是指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。
例子:start1.test2


向上转型

子类继承于父类,子类可以向上转型为父类
父类 b=new 子类();
b是可以指向子类对象的

向上转型,在运行时,会遗忘子类对象中与父类对象中不同的方法,也会覆盖于父类中相同的方法——重写。


多态的实现条件

Java实现多态有三个必要条件:继承、重写和向上转型

实现方法

Java中多态的实现方法:继承父类进行方法重写,抽象类和抽象方法,接口实现。


抽象类

在定义类是,前面加上abstract关键字修饰的类叫抽象类。


接口

  • 接口不能用于实例化对象
  • 接口中方法只能是抽象方法、default方法、静态方法
  • 接口成员是static final类型
  • 接口支持多继承

多继承实现方法:
修饰符 interface A extends 接口1,接口2{
}
修饰符 class A implements 接口1,接口2{
}


内部类

将一个类的定义放在另一个类的定义内部,这就是内部类。而包含内部类的类被称为外部类。
内部类的主要作用如下:

  1. 内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许用一个包中的其他类访问该类
  2. 内部类的方法可以直接访问外部类的所有数据,包括私有的数据
  3. 内部类所实现的功能使用外部类同样可以实现,只是有时使用内部类更方便
  4. 内部类允许继承多个非接口类型

简而言之就是类中类

成员内部类的使用方法:

  1. 定义成员内部类后,必须使用外部类对象来创建内部类对象,即 内部类 对象名 =外部类对象.new 内部类();
  2. 如果外部类和内部类具有相同的成员变量或方法,内部类默认访问自己的成员变量或方法,如果要访问外部类的成员变量,可以使用this关键字

ps:成员内部类不能含有static的变量和方法,因为成员内部类需要先创建了外部类,才能创建他自己的。


静态内部类

静态内部类通常被称为嵌套类。

  1. 静态内部类不能直接访问外部类的非静态成员,但可以通过 new 外部类().成员的方式访问。
  2. 如果外部类的静态成员与内部类的成员名称相同,可通过类名.静态成员访问外部类的静态成员;如果外部类的静态成员与内部类的成员名称不相同,则可以通过成员名直接调用外部类的静态成员。
  3. 创建静态内部类的对象时,不需要外部类的对象,可以直接创建内部类 对象名=new 内部类();

局部内部类

局部内部类,是指内部类定义在方法和作用域中。


匿名内部类

匿名内部类,顾名思义,就是没有名字的内部类。正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写。但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口。


package

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值