Java面向对象

     面向对象是Java语言的核心,是程序设计的思想。Java语言的面向对象技术包括了面向对象和面向过程的基本概念,面向对象的特征,Java语言的类,对象,修饰符,抽象类等一系列的知识点。
面向对象的特征
封装概述:
是指隐藏对象的属性和实现细节,仅对外提供公共访问方式
封装的好处:
* 隐藏实现细节,提供公共的访问方式
* 提高了代码的复用性
* 提高安全性
封装的原则:
* 将不需要对外提供的内容都隐藏起来
* 把属性隐藏,提供公共方法对其访问

继承:
* 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些    属性和行为,只要继承那个类即可。
* 通过extends关键字可以实现类与类的继承
* class 子类名  extends 父类名{} 
* 单独的这个类称为父类,基类或者超类;这多个类可以称为子类或者派生类。
* 有了继承以后,我们定义一个类的时候,可以在一个已经存在的类的基础上,还可以定义自己的    新成员。

Java中继承的特点:
Java只支持单继承,不支持多继承。一个类只能有一个父类,不可以有多个父类。

方法重载的定义:
方法重载是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数类类型或参数个数

方法重写必须满足如下要求:
1.重写方法和被重写方法必须具有相同的方法名
2.重写方法和重写方法必须具有相同的参数列表
3.重写方法的返回值类型必须和被重写方法的返回值类型相同或是其子类
4.重写方法不能缩小被重写方法的访问权限

方法重载与方法重写的区别:
1.在同一个类中,参数列表不同的同名方法我们称之为方法重载
2.父类的方法满足不了子类需求,子类重写父类的方法我们称之为方法重写
3. 方法重载在同一个类中而方法重写必须存在子父类继承关系

访问修饰符 public protected default private this
 * java中:可以使用访问控制符来保护对类、变量、方法和构造方法的访问,java支持四种不同的访问权限
 * public:对所有类可见,使用对象、类、接口、变量、方法
 * protected:对同一包内的类和所有子类可见,使用对象;变量、方法。注意:不能修饰类(外部类)
 * default:(即默认,什么也不写):在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。
 * private:在同一类内可见。使用对象:变量、方法。注意:不能修饰类(外部类)
 * this:在此处的含义是调用本类中的成员变量*(谁调用我,我就是谁  方法的调用者)

构造方法
*方法与类名相同 方法体没有返回值但是在方法声明的时候却不需要使用void修饰的方法我们称为构造方法
* 构造方法的作用 用于初始化对象 对象的属性赋值
* 没有参数的构造方法我们称之为无参构造方法
* 代码中没有编写过构造方法 jvm在执行对象初始化的帮助程序追加无参构造方法
* 注意当一个类中 既没有无参构造方法也没有有参构造方法的时候 jvm会追加一个无参构造方法
* 但是当一个类中 存在有参方法没有编写无参方法就不会生成
* 所以不论在任何情况下一定要有自己手写一个无参构造方法
*注意: 花括号包裹起来的的代码我们称之为代码块或者代码段
*只有一对花括号包裹起来的的代码我们称之为构造代码块
*构造代码块与构造方法一样都是在类被实例化的过程中被调用
*并且构造代码块在构造方法之前先执行
*类每次被实例化的过程中都回调用构造代码块
*使用static修饰的构造代码块我们称之为静态代码块
* 当类加载的时候执行静态代码块 而且静态代码块 仅执行一次 不可多执行
*而构造代码块在类实例化的过程中执行
*执行优先级  静态代码块>>>>构造代码块>>>>构造方法

静态代码块:只执行一次
构造代码块:每次调用构造方法都执行

成员变量与局部变量的区别
     * a)作用域不同
     *    -局部变量的作用域仅限于与定义他的方法
     *    -成员变量的作用域在整个类内部都是可见的
     * b)默认初始值
     *    -成员变量有默认的初始值
     *    -局部变量没有默认的初始值,必须自行设定初始值
     * c)同名变量不同
     *       -在同一个方法中,不允许有同名变量
     *       -在不同的方法中,可以有同名的局部变量
     * d)存储位置不同
     *       -成员变量是在对象创建以后存于堆中,对象回收时,成员变量消失
     *       -局部变量是方法被调用时存在于栈中,方法调用执行结束,从栈中消失
     * e)生命周期不同
     *       -对象的创建而创建,对象回收时,成员变量消失
     *       -随着方法的调用被创建,方法执行结束,从栈中清除

stati修饰符:
    static关键字的中文含义是静态的意思。使用static修饰的成员变量,常量,方法和代码分别称为静态变量,静态常量,静态方法,静态代码块,它们统称为静态成员。静态成员归整个类所有,不依赖特定的实例,被类的所有实例所共享的。只要被JVM加载就可以根据类名在全局数据区内找到。
static关键字注意事项:
* 在静态方法中是没有this关键字的
* 静态方法只能访问静态的成员变量和静态的成员方法

private关键字:
* 是一个权限修饰符。
* 可以修饰成员(成员变量和成员方法)
*  被private修饰的成员只在本类中才能访问。
private最常见的应用:
* 把成员变量用private修饰
* 提供对应的getXxx()/setXxx()方法
*  一个标准的案例的使用

类的成员变量分为两种:
1、实例变量(也就是没有被static关键字修饰的变量)
2、静态变量
静态变量和实例变量的区别(main方法是静态的)
1、所属不同
* 静态变量属于类,所以也称为为类变量
* 成员变量属于对象,所以也称为实例变量(对象变量)
2、内存中位置不同
* 静态变量存储于方法区的静态区
* 成员变量存储于堆内存
3、内存出现时间不同
* 静态变量随着类的加载而加载,随着类的消失而消失
* 成员变量随着对象的创建而存在,随着对象的消失而消失
4、调用不同
* 静态变量可以通过类名调用,也可以通过对象调用
* 成员变量只能通过对象名调用

成员变量
* 构造方法* 无参构造方法* 带参构造方法* 成员方法* getXxx()* setXxx()

成员变量和局部变量的区别
在类中的位置不同
* 成员变量:类中方法外
* 局部变量:方法内或者方法声明上
在内存中的位置不同
* 成员变量:堆内存
* 局部变量:栈内存
生命周期不同
* 成员变量随着对象的存在而存在,随着对象的消失而消失
* 局部变量随着方法的调用而存在,随着方法的调用完毕而消失
初始化值不同
* 成员变量有默认的初始化值
* 局部变量没有默认的初始化值,必须先定义,赋值,才能使用。

*静态方法可以通过类名 点 方法的方式调用,但是不能通过类名 点 方法名的方式调用非静态方法
*非静态方法可以通过类的实例化对象名 点 方法名的方式调用静态方法,也可以通过类的实例化对象名 点 方法名的方法调用非静态方法

java中父类强制转换成子类的原则:
*父类型的引用指向的是哪个子类的实例,就能转换成哪个子类的引用。 当引用类型的真实身份是父类本身的类型时,强制类型转换就会产生错误。

使用abstract修饰没有方法体的方法我们称之为抽象方法
具备抽象方法的类必须是抽象类
使用abstract修饰的类我们称之为抽象类
抽象类不一定必须有抽象方法
子类继承抽象类第一种方法是重写抽象类中的抽象方法
子类继承抽家类第二种方法是子类也是一个抽象类
使用final修饰的类不能被继承

匿名内部类
匿名内部类就是内部类的简化写法。
前提:存在一个类或者接口
* 这里的类可以是具体类也可以是抽象类。
格式:
new  类名  或者  接口名  ()  {重写方法;}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值