面对对象程序设计

一、面向对象的概念

        面向对象的程序设计就是一种更符合我们思考习惯的方式。

二、面向对象的特性

        面向对象具有抽象、封装、继承、多态的特性。其中封装、继承、多态是面向对象的三大特性。

1、封装

1.1、封装:隐藏对象的属性和实现细节仅对外提供公共的访问方式。

        注:不允许外部直接赋值,仅对外提供公共的访问方式。

1.2、访问修饰符:private、默认、protected、public。

修饰符同一个类同一个包子类所有类
public
protected
默认
private

1.3  get()/set()方法

由于外界无法直接赋值,提供一些方法用于变量赋值和获取变量。get()方法用于获取值,set()用于赋值。

注:使用get()方法,方法名必须以get开头,后加对应变量的变量名,且变量名首字母大写;set()类似。

2、继承

2.1 、继承:子类继承父类的特征和行为,使用关键字extends。语法格式:

        class父类{

        }

        class子类 extends 父类 {

        }

注:继承不到的私有成员,通过gets访问。

2.2继承的优点:①复用原代码

                          ②利用原有类,扩展它的属性和方法

                          ③所有类都直接或间接继承java.lang.Object类

                缺点:类与类之间有高耦合性。

2.3 final 修饰得类不能被继承,但可以继承其他类。

2.3方法重写:父类不满足子类需求时,子类重写父类方法。(final 修饰的方法不可以被重写

方法重写时:

        ·方法名与形参列表必须一致。
        ·子类的权限修饰符必须要大于或者等于父类的权限修饰符。
        ·子类的返回值类型必须要小于或者 等于父类的返回值类型。
        ·父类方法的返回值所属类型如果时基本数据类型,子类重写时,返回值类型必须与父类完全一致。

3、多态

3.1、多态:同一个方法的调用,可能由于对象不同而有不同的行为。

3.2、 多态的实现:在父类和继承该父类的一个或者多个子类对某些方法的重写。

3.3、引用数据类型转换;

        (1)、向上转型(父类引用指向子类):父类类型  变量名=子类对象;

        (2)、向下转型(子类引用指向父类):子类类型  变量名=(子类类型)父类对象。

三、面向对象的编程

1、类:一个Java文件可以有多个类,但最多只能有一个public修饰的类,并且这个类的类名必须与文件名完全一致,必须遵守大写字母开头的驼峰规则。

(1) 创建类的代码:

package com.yyds.unit3.demo;

public class DemoObject{

}

class Entity1{

}

class Entity2{

}

(2) 定义类的具体信息:类主要由字量和方法组成。

变量定义格式: 修饰符 变量类型 变量名 =[默认值];

方法定义格式: 返回值类型 方法名(形参列表){}

四、对象的创建和使用

创建的格式:类名称 对象名称=new 类名称();

成员变量的默认值:成员变量存在默认值

byte , short ,int ,long ,char的默认是0

float ,double的默认是0.0
布尔类型的默认值是false
char类型的默认值为“\u0000“
引用类型的默认值是null 

五、构造方法

1.1、构造方法也称作构造器(constructor):

(1)、无返回类型,且不写void

(2)、方法名必须与类名一致

1.2、构造方法的调用必须通过new调用:

修饰符 类名(形参列表){}

2.1 构造方法的重载(参数可以有1个或多个,也可以没有)

3.1 this关键字:当成功创建一个对象后,JVM会动态地分配一个引用,该引用指向的就是当前的对象,这种就称作this。它就是在成员方法或者构造方法中使用,用来调用当前对象的成员变量、成员方法或构造方法,代表当前对象。

注:成员方法中不能使用this关键字调用构造方法,使用时,必须出现在构造方法的第一行。

4.1 static关键字

1、静态变量(类变量):在类中,与成员变量同级的用static修饰的变量。优于对象存在。一般static和final(final为一个修饰符,用来修饰类、类中的属性、方法及局部变量,不能修饰构造方法,final修饰的变量只能被赋值一次)一起使用,定义全局的常量。

静态方法:用static修饰的方法,同样属于类,优于对象存在,使用类名.方法名调用。

5.1 包

1、包的定义:通过package关键字声明,包名不能以Java开头。语法格式:

package空格+包名;

2、 类的访问与导包

当使用一个类时,这个类与当前程序在同一个包中,可以省略包名直接使用,当不是一个包时,必须导入包,使用import导入包

六、super 关键字

super 可以理解为直接父类对象的引用。super访问父类中被子类覆盖的方法或属性(除private修饰的之外),它的作用是解决父类与子类中属性、方法重名的问题

例如子类与父类重名时:

super-->访问父名

this----->访问本类的名

七、Object  类

java.com.Object类时Java中所有类的父类。

Object类的常见方法:

1、toString()方法:返回该对象的字符串表示形式。

2、equals()方法:比较两个对象的地址是否相同。

3、hashCode()方法:计算一个对象的Hash码值。若一个类重写了equals()方法,就必须重写hashCode()方法。

八、抽象类

1、父类无法准确知道子类的实现方法为抽象类。用关键字abstract实现,语法格式:

权限修饰符  abstract class类名{}

权限修饰符 abstract 返回值类型 方法名(参数列表);

注:抽象类不能创建对象;

       抽象方法无方法体,只有声明;

       抽象方法必须被子类重写,抽象类被子类继承·时,不能用final连用;

        抽象类不能被实例化。

九、接口

1、 接口是比抽象类还抽象的抽象类。接口中只允许抽象方法。使用关键字interface修饰,语法格式:

interface  接口名[extends 父接口1,父接口2,……]{

//常量定义

//方法定义

}

2、类与类之间只有单继承,类与接口之间允许有多现实。要实现多个接口时,用逗号隔开:

class 类 implements  接口1,接口2{

}

3、接口的继承:接口也允许继承,并且接口之间的继承允许多继承。

4、接口的新增:static和default方法,它们允许接口的方法有方法体。语法格式:
public  interface  接口{

        static void method1(){

        }

        default void method1(){

        }

}

  • 25
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值