2022.09.17学习日记

发布于:2022-12-14 ⋅ 阅读:(329) ⋅ 点赞:(0)

今天学习了引用数据类型的转换,抽象类,以及接口。

引用数据类型的转换

引用数据类型的转换和基本数据类型的转换一样,分为自动类型转换,以及强制类型转换。

一.向上转型

1.概念

父类引用指向子类对象,叫做向上转型,相当于基本数据类型中的自动类型转换。

2.定义方法

父类类型 变量名=子类对象

3.优点:

可以隐藏子类类型,提高程序的可扩展性,多态本身就是向上转型。

4.缺点:

只能使用父类和子类共有的内容,不能使用子类特有的内容。

二.向下转型

1.概念

子类引用指向父类对象,叫做向下转型,相当于纸杯数据类型中的强制类型转换。

2.定义方法

子类类型 变量名 =(子类类型)父类对象

3.优点:

除了能使用父类和子类共有的内容外,还可以子类特有的内容。

4.缺点:

容易抛出异常。(与基本数据类型中强制类型转换类似,存在丢失数据的风险。)

三.多态中成员变量的特点

无论是编译还是运行阶段,都是参考等号左边的类型。

四.多态中成员方法的特点

编译阶段,参考等号左边的类型,运行阶段参考等号右边的类型。

五.抽象类及抽象方法

1.概念

当编写一个类时,不知道该类中的某个方法何时或者是如何实现。用abstract修饰词修饰该类及方法后,可以不写这个方法,在子类中重写此方法即可。这个被abstract修饰的类就叫做抽象类。被abstract修饰的方法叫做抽象方法。

2.使用方法

定义类: abstract calss 类名{};

定义类中的方法:访问修饰符 abstract 返回值类型 方法名(形参列表);

3.抽象类的特点:

1.抽象类不能被实例化,也就是不能创建对象。因为抽象类里的方法只有声明,不能用对象调用方法。

2.抽象类可以定义成员变量及静态变量。

3.抽象类可以有构造方法,方便子类创建对象时给抽象类赋值。

4.抽象类中可以定义抽象方法,成员方法,或者不定义任何方法。

5.子类继承抽象类是一定要重写抽象类中的抽象方法,否则会报错。

4.抽象方法的特点

1.抽象方法只有声明,没有方法体,没有大括号,以;结尾。

2.继承抽象类的子类要么实现抽象方法,要么也是抽象类,否则会报错。

3.抽象方法必须写在抽象类中,抽象类中可以没有抽象方法。

5.注意事项

abstract关键字不能和 public final static关键字共存。

六.接口(interface)

1.概念

当抽象类中的方法全是抽象方法时,该抽象类可以用另一种方式来表示,该方式就叫做接口。

2.定义方法:

interface 接口名[extends 接口1,接口2,..,]{

方法

常量

。。。

}

注:[]中的可有可没有,根据实际情况写。

3.注意事项:

1.接口可以使用extends实现多继承。

2.接口不能被实例化。

3.接口中定义的属性,都属于全局静态常量,默认由public static final来修饰的。

4.接口中定义的方法,jdk1.8之前,全部默认为抽象方法,jdk1.8之后,除了抽象方法外,接口中还可以存在

静态方法和default修饰的成员方法。

5.接口中没有构造方法,因为接口没有需要初始化的成员变量,切不能被实例化。

4.接口的实现:

类与类之间是继承关系,类与接口之间是实现关系。

语法:

class 实现类[extends 父类] implements 接口{

重写接口中定义的抽象方法

}

小白学习中,为了养成每日总结的习惯,每天写一篇。有写的不对的地方欢迎大家指出。

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到