6/4java笔记

6/4java笔记

类的初始化顺序

初始化过程是这样的:

1.首先,初始化父类中的静态成员变量和静态代码块,按照在程序中出现的顺序初始化;

2.然后,初始化子类中的静态成员变量和静态代码块,按照在程序中出现的顺序初始化;

3.其次,初始化父类的普通成员变量和代码块,再执行父类的构造方法;

4.最后,初始化子类的普通成员变量和代码块,再执行子类的构造方法;

运算符优先级

单目 >运算(加减乘除)>移位>比较>按位>逻辑>三目 >赋值 ,其中只有单目、三目、赋值是从右到左的

抽象类和最终类

抽象类和最终类(final修饰的类)都可以被声明使用。
这里只是说“声明”,并没有说“实例化”;如果只是声明是可以的,最常见的使用方式就是:
1、父类类型的引用指向子类的对象;
2、接口类型的引用指向该接口的实现类的对象;

以上两种使用方式也就是所谓的“向上转型”。

内部类

静态内部类才可以声明静态方法

继承类与实现接口的顺序

先继承后实现,只能继承一个类,可以实现多个接口

类修饰符

1、类只能用public、abstract、final修饰。

2、内部类和成员变量一样可以用所有访问权限修饰符修饰。也可以用static和final修饰

3、局部内部类和局部变量一样不能用访问权限修饰符修饰。

不同数据类型的自动转换

自动转换按从低到高的顺序转换。不同类型数据间的优先关系如下:
低 ---------------------------------------------> 高

byte,short,char-> int -> long -> float -> double

long类型是八个字节,float是四个字节,但是底层实现方式不一样,所以还是long自动转型为float
————————————————
版权声明:本文为CSDN博主「karute」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/karute/article/details/80346297

Object类含有的方法

Object类含有如下方法:

getClass(), hashCode(), equals(), clone(), toString(), notify(), notifyAll(), wait(), finalize()

方法重写

方法的重写(override)两同两小一大原则:
方法名相同,参数类型相同
子类返回类型小于等于父类方法返回类型,
子类抛出异常小于等于父类方法抛出异常,
子类访问权限大于等于父类方法访问权限。

构造函数能否继承

子类不可以继承父类的构造方法,只可以调用父类的构造方法。如果父类中有无参构造函数,则子类的构造函数会自动调用父类的无参构造函数;如果父类中没有无参构造函数,则在子类构造函数中必须使用super显式的调用父类的有参构造函数。并且super必须在子类构造函数的第一行。

面向对象的五个原则

五个基本原则:
单一职责原则(Single-Resposibility Principle):一个类,最好只做一件事,只有一个引起它的变化。单一职责原则可以看做是低耦合、高内聚在面向对象原则上的引申,将职责定义为引起变化的原因,以提高内聚性来减少引起变化的原因。
开放封闭原则(Open-Closed Principle):软件实体应该是可扩展的,而不可修改的。也就是,对扩展开放,对修改封闭的。
Liskov替换原则(Liskov-Substituion Principle):子类必须能够替换其基类。这一思想体现为对继承机制的约束规范,只有子类能够替换基类时,才能保证系统在运行期内识别子类,这是保证继承复用的基础。
依赖倒置原则(Dependecy-Inversion Principle):依赖于抽象。具体而言就是高层模块不依赖于底层模块,二者都同依赖于抽象;抽象不依赖于具体,具体依赖于抽象。
接口隔离原则(Interface-Segregation Principle):使用多个小的专门的接口,而不要使用一个大的总接口

常量的赋值方式

final修饰的成员变量在赋值时可以有三种方式:

1、在声明时直接赋值。

2、在构造器中赋值。

3、在初始代码块中进行赋值。

多态

java多态有两种情况:重载和覆写。

重载属于编译时多态,是静态的。对于同一个类中的多个同名方法,其参数列表不同,在编译时会根据参数列表选择调用相应的方法。调用同一个方法,参数列表不同,产生的行为就会不同,这是一种多态。

重写是属于运行时多态,是动态的。重写是发生在子类与父类之间的,对于父类的一个方法,不同的子类可以进行不同的重写。当我们定义一个父类的引用时,这个引用可以指向不同的子类的对象(这就是所谓的“向上转型”),也就是说我们只能在运行时才能知道该引用是指向哪个对象的,其指向的对象不同,调用同一个方法就会产生不同的行为,这就是多态。

有一点需要注意,静态方法是特殊的,对于静态方法,哪个类的引用就调用哪个类的方法,这是因为静态方法是属于这个类的,而不是对象的。

封装和继承

封装隐藏了类的内部实现机制,对外界而言它的内部细节是隐藏的,暴露给外界的只是它的访问方法。可以在不影响使用的情况下改变类的内部结构(也就是说在方法的功能不变的情况下,方法内部的具体实现细节可以改变),同时也保护了数据。

继承是为了重用父类代码,减少重复的代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值