JavaSE知识点(一)

文章介绍了Java编程中的核心概念,包括面向对象的封装、继承和多态,详细阐述了它们的定义和作用。同时,讨论了Java的跨平台机制,成员变量与局部变量的区别,以及方法的重载和重写。此外,还涵盖了构造方法、权限修饰符、final关键字、抽象类与接口的关键特性。
摘要由CSDN通过智能技术生成

面向对象三大特性

封装:隐藏了类内部的实现机制,暴漏给外界的只是类的访问方法,可以限制外界对类的属性的不合理的操作

继承:从已有的类中派生出新的类,子类拥有父类的所有属性和方法,新的类在父类的基础上扩展了新的能力,避 免了对共同特征的重复描述,提高代码重用性

多态:在继承关系(或接口实现关系)与重写方法的基础上,让父类引用指向子类对象,实际调用的子类的方法, 程序到底调用哪个方法只有在运行期才能确定

Java是如何实现跨平台的

一个java程序(.java文件),首先被编译生成字节码文件(.class文件),不同平台下的字节码文件都是相同的,不同平台下有各自的虚拟机,(虚拟机中的解释器和即时编译器)将字节码文件翻译成各自平台硬件可识别的机器码去运行。

解释器:逐行解释,立马就启动,但速度不快

jit即时编译器:第一次编译后,将经常调用的热点代码对应的机器码保存下来,下次直接使用,启动慢,速度快

成员变量与局部变量的区别

成员变量:有初始值,可以用权限修饰符,在堆中

局部变量:无初始值,不可以用权限修饰符,在栈中

成员变量是属于类的,局部变量是属于方法的

成员变量的生命周期与对象相同,局部变量随着方法的调用结束而消亡

重载和重写的异同

重载(编译期):"两同一不同" 同一个类,同一个方法名;参数列表不同(参数个数不同、顺序不同、类型不同,总之就是要编译器在编译期间能通过参数列表区分你用的哪个方法)

重写(运行期):"继承关系,同名同参,两小一大",子类重写父类同名同参的方法,子类无法重写私有、静态、final的方法,子类的返回值和抛出的异常都是小于等于,权限修饰符是大于等于

子类如何调用父类的私有方法?可以通过调用父类的public方法,在public方法中调用父类的私有方法

如果方法的返回类型是 void 和基本数据类型,则返回值重写时不可修改。但是如果方法的返回值是引用类型,重写时是可以返回该引用类型的子类的。

构造方法无法被重写只能被重载

权限修饰符

顶级class只能被public或缺省修饰;

权限修饰符可修饰属性、方法、构造器、内部类;

private的类无法被继承;

img

continue、break、return区别

continue是跳出本次循环继续下一轮循环,break是跳出整个循环体,return是返回方法这个方法结束了

static关键字

作用域:可以修饰属性、方法、代码块、内部类 注:构造器无法被static、final、abstract修饰

生命周期:随着类的加载而加载,生命周期与类相同

static的用途:不创建对象的时候也能调用静态方法或静态变量

静态方法:静态只能调用静态的东西,而不能调用非静态的,没有this或者super;非静态可以调用静态或者非静态

静态变量:静态变量在内存中只存在一份,由所有对象共享

静态成员的调用方式两种: 对象.方法名 类名.方法名

静态代码块可以提升程序性能,一些初始化工作可在静态代码块中

son是father的子类 new son();

代码执行顺序:父类静态代码块->子类静态代码块->父类构造方法->子类构造方法

final关键字

作用域:final可以修饰类、方法、变量(成员变量、局部变量都行)

final修饰类时,表明这个类无法被继承,并且此类中的所有方法都会被隐式指定为final方法

final修饰方法时,表明这个方法无法被重写

final修饰变量时,若修饰基本类型变量,表明这个变量变为了常量,不可修改其值,

若修饰引用类型变量,表明这个变量不能再指向其他的对象,也即引用地址无法再改变

一定要给final变量赋值,可以赋值的位置:定义时赋值、代码块赋值、构造器赋值,不赋值是没法用的

abstract和interface关键字

abstract(有构造器)

作用域:修饰类、方法

abstract修饰类:无法实例化

abstract修饰方法:没有方法体,abstract无法修饰final、static、private的方法,因为他们无法被重写

抽象类不一定有抽象方法,但有抽象方法一定是抽象类

若子类无法重写抽象父类所有的抽象方法则子类也应是抽象类

interface(没有构造器)

变量:都用public static final修饰

方法:都用public abstract修饰

无法实例化,接口可以多继承,一个类可以实现多个接口

相同:抽象类和接口都不能被实例化

不同:抽象类有构造方法 ; 接口没有构造方法

抽象类可以有普通成员变量 ;接口的变量都是 public static final的

抽象类可以包含非抽象方法 ; 接口中的方法都是抽象的 用public abstract修饰,java8开始接口中还可以有默认方法和静态方法,java9开始接口中还可以有私有方法

抽象类单继承 ; 接口可以多继承

抽象类中的抽象方法可以是public 或 protected的 ;接口中的抽象方法必须是public的

一个java类只可以继承一个抽象类 但可以实现多个接口

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值