JAVA的特性(基础慨念)

JAVA的特性
面向对象
万物皆对象,对象因关注而存在
对象是类的实例,类是对象的描述
对象有属性和行为组成
属性也称成员变量
方法中的变量称为局部变量
对象
this 
(关键字)指代正在调用该方法的对象(可以不写)
只能在当前类中使用
也指成当前类中的某个正在调用的方法的对象
当方法和属性同名的变量时,需要this来区分是属性还是变量
用处
直接在本类中的非static方法中使用this。xxx(此时this表示当前对象
在构造器中使用this(参数):表示本类中的一个构造器,并且只能放在构造器中的第一句
创建对象的方法
new 购造起();
反序列化
反射
克隆
创建对象
构造器在创建对象
当没有书写构造器时,类会自动生成一个无参构造
格式:访问修饰符。类名。(参数列表){}
垃圾回收机制,在堆中当没有引用指向对象时,对象可以被回收,可以使用System, GC来召唤垃圾回收机制,但是他却不会马上回收,而是他认为到了适当的实机才会回收
在java中每个类都属于一个包
提供了一个组织类的机制
为包中的类提供了一个命名空间
使用package关键字可以将一个类申明在一个包中
否者就是属于默认包
创包:com.公司名,项目名,前缀
可以使用import来导入包名
对象的行为(方法)
当一个方法被调用时,将导致控制流程跳转到被调用的方法,然后控制流程执行方法中的语句,当被执行的方法可能会调用其他的方法,导致控制流程会跳转到其他方法,当前正在执行的方法位于调用栈的顶部,当调用的方法运行完成之后,又把流程控制权交还给上一成方法
当一个方法正在执行时有三种情况
方法返回 一个值
方法不返回一个值(void)
方法抛出一个异常给方法的调用者
方法签名
如果方法签名中没有static,就用对象点的方式来调用否者就用类名点的方式来调用
方法签名不包含方法体累的任何语句,签名只是方法声明的一部分
访问修饰符
访问的权限
public
本项目中公共的
protected
只能在本包中和外包子类中使用
默认(什么都不写)
只能在本包中使用
private
只能在本类中使用,规定所有的属性私有化(除了常量)
封装
可选修饰符
static
被static修饰的内容与类有关,对所有对象来说市共有的
没有被static修饰的内容与对象有关
如果被static修饰的属性使用对象来进行赋值,会造成所有对象的该属性都会被赋值为同值
与对象没有直接关系的,所有对象都共有的属性应该被static修饰
21.是否可以在一个static方法中发出对一个非static方法的调用?为什么?
不能,加载方法时间不对,除非创建对象
返回值
方法名
形式参数列表
可变参数
public void use(int...a )
不传参
传参个数不定,数据类型需要对应
传数组只能传一个,可以写上其他数据类型的参数,但是可变参数只能有一个,有多个参数时,可变参数只能放在最后面
递归:方法本身调用自己达到一种循环效果,然后有一个出口
方法重载
当一个类有两个到多个同名但是有不同参数列表的方法时
数组的复制
运用arraycopy方法来进行复制当然也可以用循环来复制数组
简单性
相对来说简单,没有c语言的指针等等
健壮性
安全性
可移植性(跨平台性)
异常
面向对象四大特性
封装
继承
在面向对象编程中,可以通过扩展一个已有的类,并继承该类的属性和行为来创建一个新的类
已有的类称为父类,(基类,超类),子类亦可以称为派生类
一个类用关键字extends继承其他类,extends出现在类声明时的类名后,extends后面跟着的是要继承类的名称
方法重写
子类可以重写父类继承的方法,从而允许子类添加或者改变父类中方法的行为
子类的方法的返回值的类型,方法名和形式参数列表必须和父类中的相同,如果子类中的方法与父类中的方法同名,但是子类的方法改变了形式参数列表,那么这是方法重载而不是重写
访问修饰符必须不小于父类中的访问修饰符
子类中重写的异常不能抛出比父类中更多的异常
equals()方法:如果两个对象是相等的,那么它们必须产生相同的哈希码,因此,如果一个类重写了equals()方法,通常也需要重写hashCode()方法
equals()方法比较两个对象是否相等,比较运算符==用于检测两个引用是否指向同一对象
final关键字
final类(最终类,不可以有子类)
final方法(最终的方法,不可以被重写)
实例化过程
new 运算符调用子类的构造器
子类会用this关键字调用子类的其他构造器,最后,子类的第一行代码中不是this()的构造器将被调用
在子类的构造器中任何语句执行前,父类的构造器必须用super关键字调用。如果没有显示的使用super调用,那么编译器会用super()调用无参数的父类构造器
如果父类也是另一个类的子类,那么父类构造器中任何 一句语句执行前,父类构造器必须使用super调用到更高一层的父类构造器
本过程继续执行,直到达到类层次树的顶部,object类
object类中的构造器执行,然后控制流程转到继承层次数中object下面的类的构造器中
构造器沿着继承层次树向下执行,最后一个要执行的构造器实际是第一步中先调用的那个构造器
在每个构造器中,如果调用super()或this(),那么调用代码必须是构造器中的第一行代码
调用父类构造器
关键字super用于调用父类的构造器,如果构造器没有显示的使用super关键字,那么编译器会自动添加一个无参数的super()来调用父类的构造器,但是如果父类没有无参数的构造器,调用空括号的super()不会通过编译,因此,子类构造器需要显示的地调用父类构造器,并将恰当的实际参数传递给父类的构造器
继承自由一个父类多个子类(单继承)Java的特性
如果子类代码中有和父类相同的属性,子类会覆盖父类(没必要做)
Java中所有类的父类object类
在创建子类对象时,没有创建父类对象,只要是创建子类对象时需要将父类的类容加载到子类对象上。不能再子类中重写父类的构造器,因为构造器的名称和类名相同
如何判断关系
is     a
继承 (是一个)
has   a
属性(有一个)
use   a
形参(用一个)
成员变量是属性和行为
to  string方法:该方法是object的方法,所以只要是一个对象都可以调用他
多态
相同行为,不同实现
静态多态
在程序书写后就知道如何执行(方法重载)
指你调用某个重载的方法时,只要传入指定的参数,就会在运行前知道你调用的哪个方法
动态多态
在程序书写后,值是动态的效果(方法重写,但不全是)
当有重写的效果时,使用父类引用指向子类对象,在运行前是不知道调用的哪一个类的方法
动态多态需要三种要求
向上转型技术(和内存大小无关)
引用数据类型的自转(小范围储存到大范围类容中)
向下转(大范围类容储存到小范围类容中)
instanceof
判断对象是否是属于某一个类(强转前的判断)
动态绑定机制
要求首先有向上转型的过程,然后使用父类引用指向子类对象,然后调用父类中重写过的方法,即得到子类重写的实现效果
抽向
没有具体的实现
可以运用到方法和类上,使用abstract修饰没有实现的类容,并且类也该被他修饰,一但被abstract修饰就没有实例
被abstract修饰的方法和类称为抽向类,抽象方法
抽象类不能创建对象,构造器的作用,为创建子类对象提供父类类容所需的类容
如果父类是含有抽象方法的抽象类,子类有两种选择
在子类内部实现父类的抽象方法
如果子类不想实现父类的抽象方法,则父类的抽象方法使得子类也必须是抽象类,由子类的子类去重写抽象方法
接口
对已有内容进行扩展,与抽象类相似
接口和抽像类的区别
接口不是类,而抽象类依然是类
接口不由class表示,而使用interface关键字表示
仍然有。Java文件书写
接口在jdk1.7以前只能有抽象方法,而抽象类可以有普遍方法,接口被interface修饰,不能被abstract修饰,方法书写时可以省略abstract
接口是数据类型,不能有实例,不能被类继承
接口方法不写public也是公开的,类直接实现接口但没有全部实现抽象方法,该类是抽象类
接口可以多继承接口,而类只能单继承,继承是对桶数据类型而言的,而类不能继承接口,只能由implements实现
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值