java基础学习笔记(5)
来源:互联网 发布:网络与新媒体专业 编辑:程序博客网 时间:2024/06/05 09:39
Java基础学习(5)
接口、继承与多态
类的继承
在java中使用extends关键字来标识两个类的继承关系。
Calss Test()
{
public Test()
{
}
protected void doSomething()
{
}
Protected Test dolt()
{
return new Test();
}
}
class Test2 extends Test{
public Test2()
{
super();
super.doSomething();
}
public void doSomethingnew()
{
}
public void doSomethxing()
{
}
protected Test2 dolt()
{
return new Test2();
}
}
总结:
1)在子类构造方法中可以调用父类的构造方法来构造子类,用super()实现;
2)在子类中使用super关键字调用父类的方法;
3)super关键字只能调用public和protected修饰的成员方法;
4)在子类中可以重写父类的方法,包括方法的权限修饰符,返回值,参数类型及个数,实现内容。
5)如果仅仅是修改实现内容,称为重构。
6)重写父类方法不能降低方法的修饰权限范围。
7)在继承机制中,java编译器会在子类构造方法中先调用父类的无参构造方法,对于有参构造方法,只能通过super()显示调用。
技巧:如果使用finalize()对对象进行清理,需要确保子类的finalize()方法的最后一个动作是调用父类fianlize(),以保证当垃圾回收对象占用内存时,对象的所有部分都能被正常终止。
Object类
1)在java中,所有的类都直接或间接的继承自java.lang.Object类。
2)任何类都可以重写Object中类,但是getClass(),notify(),notifyAll(),wait()等方法不能被重写。
3)常用的toString()和equals();
对象类型的转换
向上转型
由较具体的类到较抽象的类转换;即把子类对象赋值给父类类型的变量。
向下转型
由较抽象的类到较具体的类转换;即把父类对象赋值给子类类型的变量。
使用instanceof操作符判断对象类型
在向下转型时,如果父类不是子类的实例,会发生ClassCastException异常,所以在转换前要判断父类是否是子类的实例,通常使用instanceof操作符来完成。
调用方式:
myobject instanceof ExampleClass
返回true,则myobject 是ExampleClass的实例;
返回false,则myobject 不是ExampleClass的实例;
方法的重载
构成重载的条件:
1)参数类型不同,构成重载
2)参数个数不同,构成重载
3)参数顺序不同,构成重载
多态
根据向上转型原则,通过父类成员方法实现不同的子类。
多态存在的三个必要条件
一、要有继承;
二、要有重写;
三、父类引用指向子类对象。
抽象类和接口
抽象类
抽象类和抽象方法必须用abstract关键字修饰
抽象类中不一定有抽象方法,但是有抽象方法的类必须定义为抽象类
抽象类不能实例化,抽象类有构造方法,但是不能实例化
抽象的子类
a:如果不想重写抽象方法,该子类是一个抽象类。
b:重写所有的抽象方法,这个时候子类是一个具体的类。
接口
接口的特点:
A:接口用关键字interface表示
interface 接口名 {}
B:类实现接口用implements表示
class 类名 implements 接口名 {}
C:接口不能实例化 注意接口的实例化的方式和抽象方法的是一样的
D:接口的子类
a:可以是抽象类。但是意义不大。
b:可以是具体类。要重写接口中的所有抽象方法。
- java基础学习笔记(5)
- Java基础学习笔记5
- java基础学习笔记5
- Java基础学习笔记5
- Java基础学习笔记5
- java基础(学习笔记)
- 【学习笔记】java基础学习(一)
- JAVA学习笔记(复习)-----5、 JAVA基础(四)
- java基础学习笔记
- java基础学习笔记
- java基础学习笔记
- java基础学习笔记
- JAVA 基础学习笔记
- Java基础学习笔记
- java 基础学习笔记
- Java基础学习笔记
- 学习笔记-JAVA基础
- java基础学习笔记
- android四大组件之一Service详解(带实例及运行结果)
- How to add multiple filters to UIImage GPUImage?
- Unity 3D中的内存管理
- Lua篇(第06章):Lua调用C++的函数
- Android将“.c”后缀名改成“.cpp”时java调用native失败及“error: base operand of '->' has non-poin
- java基础学习笔记(5)
- 利用SSIS进行SQL Server 数据导入导出——Lookup Plus组件的使用心得
- Java 构造函数
- 大型网站系统架构演化之路
- 在拦截器中使用service层中的方法。
- Android Studio遇到的问题一
- Android AIDL Service 跨进程传递复杂数据
- hadoop2.7.1文基础操作测试
- 在Hibernate中增删改查