## ***我的Java学习之路———(三)***

Java修饰符
访问控制修饰符

修饰符当前类同一包内子孙类(同一包)子孙类(不同包)其他包
publicYYYYY
protectedYYYY/NN
defaultYYYNN
privateYNNNN

默认访问修饰符–不使用任何关键字(变量和方法的声明可以不适用任何修饰符)

私有访问修饰符–private
被声明为private的方法、变量、构造方法只能被所属类访问、并且类和接口不能声明为private
private主要用来隐藏类的实现细节和保护类的数据

共有访问修饰符–public
被声明为public的类、方法、构造方法和接口能被任何其他类访问

受保护的访问修饰符–protected
子类和基类在同一个包中:被声明为protected的变量、方法和构造器能被同一个包中的任何其他类访问
子类和基类不在同一个包中:子类实例可以访问其从基类继承来的protected方法,而不能访问基类实例的protected方法

函数的重载
同名的函数通过不同的形参做类似的事情
要求:
1、函数形参个数
2、函数形参顺序
2、函数形参数据类型
这三个至少一个是不一样的

关键字this
1、是一个系统隐含的指针被自动附加在非静态的成员函数列表中
2、当前时刻,哪个对象调用该方法,那么this就指向当前调用该方法的对象,系统会自动在该方法的参数列表中添加一个隐藏的this指针。这样一来,在方法的内部通过this就可以访问当前正在调用该方法的对象的成员
3、静态方法内部,没有this指针
在普通方法中,关键字this代表方法的调用者,即本次调用该方法的对象。
在构造方法中,关键字this代表该方法本次运行所创建的那个新对象
this 不能在静态成员中
this.成员变量名

关键字static
定义为static的属性变量、方法是属于类本身的。或者说,没有对象,我们仍可以直接通过类名的方式访问该类static的属性变量、方法。
同样的,static属性和方法也属于类对象,也可以通过类对象名的方式访问。
只有非private的static的属性和方法才可以通过类名的方式访问

非静态方法可以访问静态成员(方法和属性)
我的理解:静态方法可以使用类名和类对象名访问,非静态方法可以使用类对象名访问。如果能访问了非静态方法,说明有类对象名,有了类对象名,也就可以访问静态成员。

静态方法不可以访问非静态成员
反证:如果可以访问,也就是说,没有类对象名就直接可以访问非静态方法,这与Java编程规则矛盾。得证静态方法不可以访问非静态成员

一个类的属性不仅仅是变量, 还可以是个类对象

继承 (extends)

一个新类从已有的类那里获得已有的方法和属性
这个新类被称为子类,也叫派生类,已有的那个类叫做父类,也叫基类
1、子类内部可以访问父类非私有的成员
2、子类实例化后的对象,只能访问从父类继承的非私有的成员
私有不能被继承
Java只支持单继承,不允许多继承
单继承就是一个类只能由一个父类
多继承就是一个类可以有多个父类
可以有多层继承,即一个类可以继承某一个类的子类。
子类可以继承父类的所有的成员,但子类永远无法继承父类的构造方法。

子类访问父类的三种方式
1、通过子类内部访问父类成员
2、通过子类对象名访问父类成员
3、通过子类类名访问父类成员
私有父类成员不能被访问被继承
子类是父类的类型,但父类不是子类的类型
子类的实例可以声明为父类,但父类的实例不能声明为子类型

super
1、每个子类构造方法的第一条语句,都是隐含的调用super(),如果父类没有这种形式的构造函数,那么在编译的时候就会报错。
2、如果显示的写出super();语句,则必须保证该语句是第一条语句,否者会出错
3、super();如果不写,则编译器会自动添加(跟构造方法类似),所以此时如果父类没有无参的构造函数就会出错
4、既可以显示写super();前提是父类必须有无参的构造函数
也可以显示写super(实参);前提是父类必须有带参的构造函数
5、调用父类的构造函数的语句必须借助与super,不能直接父类的类名
6、一个构造函数中不能写多个super(参数列表)语句

方法重写
指在子类中重新定义父类中已有的方法
重写方法必须和被重写方法具有相同的方法名称、参数列表和返回值类型
子类中不允许出现与父类同名同参但不同返回值的方法,如果出现,编译时会出错
重写方法时,不能使用比父类中被覆盖的方法更严格的访问权限(public->protected->不写(default)->private)
重写的意义:如果子类对继承自父类的方法不满意,就应该重写父类的方法

Java运算符
1、()、[]、·(点操作符)
2、单目
3、* / %
4、+ -
5、<< >>> >>
6、关系
7、= 、!=
8、按位与
9、按位异或
10、按位或
11、逻辑与
12、逻辑或
13、三目
14、赋值
15、逗号

instanceof运算符
该运算符用于操作对象实例,检查该对象是否是一个特定类型(类类型或接口类型)
格式如下:
( Object reference variable ) instanceof (class/interface type)
如果运算符左侧变量所指对象,是操作符右侧类和接口(class/interface type)的一个对象,那么结果为真

Java数组
声明数组变量:数据类型[ ] 数组名

创建数组
数据类型[ ] 数组名 = new 数据类型[数组大小]

多维数组
数据类型:[ ] 数组名 = new 数据类型[数组大小][数组大小]

Arrays类
java.util.Arrays 类能方便地操作数组,它提供的所有方法都是静态的。
1、给数组赋值:通过 fill 方法
2、对数组排序:通过 sort 方法,按升序
3、比较数组:通过 equals 方法比较数组中元素值是否相等
4、查找数组元素:通过 binarySearch 方法对排序好的数组进行二分法查找

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值