学习java真快乐

class 修饰类

权限修饰符(可以修饰属性和方法)

一 、static 修饰属性,方法 代码块,内部类(所有对象共享)

1修饰属性,这个属性不再是实例变量,而是类变量。

1.1实例变量,即实例的变量,有多少个实例就有多少个变量

1.2类变量,即类的变量,这个类所有的实例共用这个变量

1.3类属性应该使用类去访问,不要使用对象去访问(尽管可以)

2修饰方法,这个方法不再是实例方法,而是类方法。

2.1实例方法,实例的方法,即对象的方法。由对象调用方法。

2.2类方法,类的方法,这个类所有的对象共用这个方法。

2.3类方法应该使用类去访问,不要使用对象去访问(尽管可以)

2.4 静态方法中不能访问实例变量,静态方法只能访问静态属性和静态方法。

静态方法中访问实例方法,不知道访问的是哪个对象的实例方法。

二、final

1 修饰类:说明类是最终的类,即不能有子类,不能被继承。

2修饰方法:说明方法是最终的方法,即方法不能被子类重写。

3 修饰变量(实例变量、局部变量)说明变量是最终的,即变量的值不能发生变化。

 定义实例变量时要直接赋值,局部变量定义之后有一次赋值机会。

三、abstract

1 修饰类,抽象类不能创建对象。

2 修饰方法,抽象方法 没有方法体。

抽象方法所在的类必是抽象类。一个非抽象类继承一个抽象类,要求必须重写抽象类中的抽象方法。

四、interface

接口:特殊的抽象类

jdk8之前:接口中所有的方法都必须是抽象方法,都没有方法体

接口中所有的属性都必须是: public static final修饰的变量=常量

接口中所有的方法都必须是:public abstract修饰的

jdk8及之后版本:

可以出现default修饰符修饰的方法和static修饰的方法(有方法体)

五 、接口和抽象类的区别

相同点:1. 接口和抽象类都不能实例化对象。

2. 接口和抽象类都可以使用多态。

3. 接口和抽象类都可以包含抽象方法。

4. 一个类如果实现接口必须实现全部的抽象方法(或者自身定义为抽象类,不实现接口中的方法,由子类去实现),一个类继承抽象类,必须实现全部的抽象方法(或者自身定义为抽象类,不现实接口中的方法,由子类去实现)

不同点:

1. 接口中的属性只能包含静态常量(public static final)。抽象类中的属性可以包含:实例变量、静态变量、常量(静态、非静态),而且访问修饰符可以是(public、缺省、protected、private)2. 接口中的方法通常是抽象方法(Java8开始,可以有默认方法和静态方法)。抽象类中的方法可以包含:实例方法(含getter、setter)、静态方法、抽象方法。

3. 接口不能有构造方法(它不是类),抽象类可以包含构造方法。

4. 接口中不能包含初始化块、静态代码块。抽象类中可以包含初始化块和静态代码块。

5. 接口中的默认方法必须用default修饰。抽象类中不需要default就可以实现方法。

6. 接口可以继承别的接口,而且可以继承多个。抽象类可以继承别的类,但只能继承一个类。

7. 一个普通类,只能有一个父类(包括抽象类),但可以实现多个接口。

六 、{}代码块

分类:

局部代码块(方法内部的代码块)

初始化代码块(不能主动调用,随着对象的创建自动加载,先于构造方法执行

如果有多个代码块,按照从上往下的顺序)

静态代码块 (随着类的加载而加载,只加载一次,如果有多个,从上往下)

七 、方法重载和方法重写的区别

1、首先是含义不同

1)方法重载是在同一个类中,声明多个同名方法,通过参数列表来区分不同的方法,与参数列表的数量、类型和顺序有关,与修饰符和返回值类型以及抛出异常类型无关

2)方法重写(方法覆盖)的前提是发生在具有继承关系的两个类之间,方法重写有以下规则:

a.参数列表必须保持一致

b.返回值类型小于或等于父类的返回值类型

c.方法名必须保持一致

方法的重载和重写的作用不同

重载:在一个类中为一种行为提供多种实现方式并提高可读性

重写:父类方法无法满足子类的要求,子类通过方法重写满足需求
八、this和super的区别

九、4个权限修饰符区别

private 私有的 只能在本类中直接使用

缺省的 默认的 本类 同包

protected 受保护的 本类 同包 不同包子类

public 公有的 在任意类 包都可以直接访问

十、面向对象三大特征 

封装,继承,多态

封装的特点

1.保护程序的安全性;
2.隐藏代码的实现细节,因为封装就是将这个类封装起来,留下可以访问的接口;
3.系统可维护性增加;
4.统一接口。

继承的特点

 优点:1、提高代码的维护性(只需要改动父类)。2、提高代码的复用性(共性的成员抽取到父类中,子类可以直接继承使用)。
        缺点:类和类之间的关系太紧密了。(耦合性增强)  

多态 多态是面向对象编程中的一个重要概念,指的是同一种类型的事物,在不同的情况下所表现出的不同的状态和行为。多态性是面向对象编程的一个基本特性,它使得程序更加灵活和可扩展。

好处:提高了程序的扩展性,容易设计出通用的代码。弊端:屏蔽了子类独有的功能。(不过,可以强转类型)

十一、intanceof关键字的作用是:判断对象是不是某个类的实例

instanceof 是一种运算符,用于检查一个对象是否是某个类或其子类的实例。它返回一个布尔值,如果是该类或其子类的实例,则返回 true,否则返回 false。

final 所有对象共享 代表最终类不可以被继承 修饰属性在定义的同时必须赋值,而且值不能更改 修饰局部变量可以在定义之后赋值 但只能一次  final修饰方法不能被重写。

abstract 抽象方法 (没有方法体的方法)抽象方法所在的类必须是抽象类 抽象类中的方法不一定是抽象方法  一个非抽象类继承一个抽象类,必须重写抽象类中的抽象方法  抽象类不能创建对象。 

不定参数方法:指的是方法的参数是可变的,不确定的,只有调用的时候,才知道参数的具体个数。不定参数的形参本质上是一个数组。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值