面向对象 笔记

4.1继承

对象共同属性和特征,抽取出来-----类

类之间的共同属性和方法,抽取出来-----基类/父类

例如:

猫类,狗类,共同属性和方法----宠物类

设计实现父类--宠物类

子类继承父类

1、重写

  • 前提:

继承关系,父类和子类

在子类中,如果父类的方法不适用,子类就会重写父类方法。

  • 重写的方法

子类和父类,返回类型、方法名,参数都一致

方法的访问级别可以不一致,子类的访问级别不小于父类的访问级别

  • 子类对象调用重写的方法

默认调用子类重写之后的方法

  • 区别重载和重写

重写---方法名同

重载---方法名同

同名方法的位置不同

重载--同名的方法再同一个类中。

方法名相同,参数个数或类型不同

重写--同名方法在2个类中,一个在父类,一个在子类

访问级别可以不一样,其他的都相同(返回类型,方法名,参数)

2、构造方法

new 对象,就会调用构造方法。

继承关系下,子类对象创建时,先调用父类的构造方法再调用子类自己的构造方法

3、Java继承关系---单继承

一个类只能有一个父类,一个父类可以有多个子类。

所有的类直接或间接继承一个最终的父类,Object类

toString方法

子类继承父类,继承父类的成员(方法和属性)。父类的私有成员,private,只能在本类中使用。

子类不能操作父类的私有成员。

4、super关键字

  • this关键字

指代当前对象

this.属性

this.方法

this()构造方法-----必须放在构造方法中,必须放第一条语句

  • super

指代父类对象。

surper.属性

super.方法

super()父类的构造方法---必须放在构造方法中,必须放第一条语句

5、final关键字

最终的

  • final 变量----- 值不再变化,常量
  • final 方法----方法就不能改变。继承关系中,子类不可以重写方法
  • final 类-----类不能改变。不能有子类。

4.2 抽象类

特殊的类

  • abstract 类

类不能实例化,不能new对象。

  • abstract 方法

抽象方法。方法没实现(缺乏一些条件,导致无法实现)。

abstract 方法();

The abstract method eat in type Pet can only be defined by an abstract class

  • 包含有抽象方法的类,必须是抽象类

包含有抽象方法的类,这个抽象类如果有子类,子类也是抽象类,除非子类实现了这个抽象方法

  • 抽象类不是必须有抽象方法

4.3 接口

Java框架---实现接口

特殊的类,特殊的抽象类

接口中,

  • 所有的方法都是抽象方法,默认方法,静态方法;

  • 所有的属性都是静态常量。

1、语法

interface 关键字

implements 继承关系的关键字

接口的继承---接口的实现。

2、实现

接口可以多实现

一个子类继承一个父类但是可以实现多个接口。

要求implements放在extends后面。

class Person{}

interface Work{}

interface Play{}

class Teacher extends Person implements Work,Play{}

接口可以多继承

interface Work{}

interface Play{}

interface HOPEWork extends Play,Work{}

4.4 多态

一个对象的多种形态。

创建对象:

类型 对象名=new 类型();
  • 声明对象的类型
  • 创建某个类型的对象

多态的对象

声明的类型是父类类型和创建的对象类型是子类类型。

class Pet{}

class Dog extends Pet{}

//多态对象

Pet ddd=new Dog();

例:实验室助理---点名,登分

class 学生{}

class 研究生 extends 学生{}

class 博士 extends 研究生{}

招聘启示:学生

声明: 学生 助理;

招聘回来:创建对象

创建: 研究生

学生  助理=new 研究生();

研究生 答疑助教=new 学生();//类型不匹配

多态的应用

  • 多态对象使用的时候,按照new的实际类型使用

    USB deviceA=new USBLight();
    //多态对象使用的时候,按照new的实际类型使用
    deviceA.inUse();//方法被重写,子类对象调用的重写后的方法。
    
  • 语法检测的时候,按照对象的声明类型

    //语法检测的时候,按照对象的声明类型
    //要使用实际类型中有的方法,需要强制类型转换
    //强制类型转换的前提,对象的实际类型确实是转换成了对象的实际类型
    //运算,判断对象是否是所属类型
    if(deviceA instanceof USBLight){
        ((USBLight)deviceA).addLight();//调用子类特有的增加亮度的方法
    }
    
  • 对象 instanceof 类 //判断对象是否是所属类型

4.5匿名对象和匿名类

匿名对象--没有名字的对象

匿名类--没有名字的类

4.6异常

程序执行的时候,正常的情况是从开始main方法入口,执行到最后一条语句结束。

程序出现问题,程序就会终止运行。

解决问题

  • Error错误--严重问题,不做处理

  • Exception异常--一般问题。写代码针对问题进行处理,让程序能继续运行后面的代码

    上课-休息-上课-休息

    发烧----------------终止,处理吃退烧药

    四年,毕业

处理方案

  • try catch捕获异常并处理

  • throws声明抛出异常,上一级进行捕获处理

    英语4级,监考验证身份,发卷,收卷。

    举手,拉窗帘----try catch

    举手,上厕所----监考老师不能处理,向上一级请示(将异常交到上一级处理)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鲨鱼辣椒01

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值