8、面向对象

1.什么是面向对象

面向对象程序设计(object oriented programming简称OOP)

对象是一个由信息(变量)及对信息进行处理(方法)的描述所组成的整体,是对现实世界的抽象

其本质是对现实事物的特征和变化规律建立的模型

现实世界里我们所面对的事物都是对象,如具体存在的电脑,桌子等

而从具体对象中抽取出来的类型概念就是类。

面向对象三大特征:

封装:把自己的数据和方法只让可信的类或对象操作,对不可信的进行信息隐藏

继承:让某个类型的对象获得另一个类型的对象的属性的方法

多态:一个类实例的相同方法在不同情形有不同表现形式

2.java与面向对象

java面向对象是基于类去生成对象。

public class Student{

String name;

string sex;

int age;

}

//创建对象使用

Student stu = new Student( );

定义类使用class关键字,如上边代码,定义了一个叫Student的类

类中可以有属性︰成员变量,

类中可以有方法:表示该类所生成对象的行为

java是基于类生成对象的,也就是说,必须要先定义类,才能生成对象。比如上边的代码基于Student类生成stu对象。

3、构造方法Constructor

构造方法〈又叫构造器)是一种特殊的方法,它的作用是在创建对象的时侯,完成对象成员变量的初始化。

特点:

1)方法名与类名一致

2)没有返回值也没有void

3)通过new关键字调用

4)当一个类没有显式的声明构造方法时, java会默认创建一个无参构造方法

5)构造方法可以重载

6)当显示的声明了有参构造方法时,java就不会再默认创建无参构造方法了(我们可以自己再把无参构造方法显示的声明一遍)

4、面向对象三要素

1、封装

细节(变量和方法〉隐藏,成员变量设置为私有(private),然后提供set和get方法来写和读。通俗的讲,封装就是不允许直接访问成员变量,必须通过set和get方法来访问;

优点︰安全,便于重构

1)良好的封装能够减少耦合。

2)类内部的结构可以自由修改。

3)可以对成员变量进行更精确的控制。

4)隐藏信息,实现细节。

1.1 this关键字

this关键字,表示当前类的对象

一般只有在方法中,成员变量名和局部变量名重名的时候,用this来指定成员变量,参考上面示例的setAge方法。

1.2访问控制修饰符

访问控制修饰符,用来控制访问权限,一共有四个

2、继承

通过关键字extends来声明子类与父类的继承关系,子类extends 父类

public class Student extends Person{

}

特点∶

1)所有类都有父类:Object类,即所有类都派生于Object类

2)只能单亲继承(单继承),即每一个子类只能有一个父类

3)子类只能继承父类的非private修饰的变量和方法

子类不能继承父类的私有属性,

如果子类中公有的方法影响到了父类私有属性,那么私有属性是能够被子类使用的(即通过父类的公有方法访问到父类的私有变量)

4)子类可以直接使用继承的变量和方法,不需要再在子类中声明或写出

2.1super关键字

表示当前类的父类对象,可以使用super关键字实现对父类变量和方法的访问

注意∶在子类的构造方法中,无论写不写super(),java都会默认使用super()调用父类的构造方法,super()是父类的无参构造方法,而且这行代码默认在子类构造方法的第一行

想要构造子类,先构造父类。

一旦想使用带参的构造方法,先把无参的构造方法写上,防止报错

示例:

public class Kid extends Parent{

public Kid( ) {//无参构造方法

super( );//调用父类构造方法是在构造方法中的第一行代码

class B extends A{

B(int i){

super(i);//相应的父类的构造方法也要带参

System.out.println("B constructor");

}

}

2.2重写

子类继承了父类的方法,对父类的方法中的执行代码进行修改以满足子类业务的需要,这就是重写。特点∶

1)重写发生在子父类当中

2)方法名、参数列表、返回值类型均相同

3)重写的方法,方法体不同或者访问控制修饰符不同

4)子类方法的访问权限不能缩小

5)静态方法 (static)不能进行重写(因为静态资源只加载一次)

2.3重写与重载的区别

 

3、多态

没有继承就没有多态,生成的对象,在调用父类方法时,如果方法被子类重写,则调用的是子类重写的方法。

代码当中体现多态性.其实就是一句话:父类引用指向子类对象

格式:父类对象名= new子类);

父类:Person

子类:Student extends Person

创建对象:Person p2 = new Student();

p2.父类中的方法

子类的对象可以复制给父类对象。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值