1.类的继承
java语言每个类只能继承一个父类。
extends——继承
父类 和普通类写法相同
public class 父类类名{
}
子类 需要继承父类
public class 子类类名 extends 父类类名{
}
所有类的构造方法第一行都有一个隐藏的“super();”
作用是在执行该构造方法之前调用其父类的构造方法
2.odject类
Object类是比较特殊的类,它是所有类的父类,是Java类层中最高层类。
方法的重写:返回参数相同,方法名相同,传入参数相同,方法体不同
getclass()方法
是Object类定义的方法,它会返回对象执行时的Class实例,然后使用此实例调用getName()方法可以取得类的名称。
语法:getClass().getname();
可以将getClass()方法与toString()方法联用
tostring()方法
它的功能是将一个对象返回为字符串形式,它会返回一个String实例。
在实际的应用中通常重写toString()方法,为对象提供一个特定的输出模式。当这个类转换为字符串或与字符串连接时,将自动调用重写的toString()方法
equals()方法
“==”运算符与equals()方法是两种比较对象的方法。
两者的区别在于:“==”比较的是两个对象引用内存地址是否相同,而equals()方法比较的是两个对象的实际内容
3.对象类型的转换
向上转型
将子类对象赋值给父类引用。
通过自动类型转换。
例:Animal a = new Dog();
向下转型
将父类对象赋值给父类引用。
需要进行强制类型转换。
例:Dog a = (Dog) new Animal();
4.方法重载
方法名相同,参数不同。
区分:子类重写父类的方法——返回参数相同,方法名相同,传入参数相同,只有方法体不同
在谈到参数个数可以确定两个方法是否具有重载关系时,会想到定义不定长参数方法。
不定长参数语法:返回值 方法名(参数数据类型...参数名称)
5.final 关键字
final修饰变量——不可以被修改(常量)
final修饰方法——不可以被重写
final修饰类——不可以被继承
报错:不能覆盖Dad中的final方法
因为打开电视这个方法是由final修饰的,子类无法重写。所以Baby想要打开电视,就只能找爸爸来打开了
6.使用instanceof关键字判断对象类型
对象名 instanceof 类名
判断该对象是否属于该类或其子类
报错:条件操作数类型Quadrangle和Circular不兼容
因为四边形类与圆形类没有继承关系,因此两者不能使用instanceof关键字进行比较,否则会发生“不兼容”错误
7.多态
利用多态可以使程序具有良好的扩展性,并可以对所有类对象进行通用的处理
8.抽象类和接口
抽象方法
修饰符 abstract 返回参数 方法名 (传入参数);
抽象类 有抽象方法的类一定是抽象类
修饰符 abstract class 类名{
}
抽象类被继承后需要实现其中所有的抽象方法,也就是保证以相同的方法名称、参数列表和返回值类型创建出非抽象方法,当然也可以是抽象方法。
继承抽象类的子类必须重写父类所有的抽象方法。否则,该子类也必须声明为抽象类。最终,必须有子类实现该父类的抽象方法,否则,从最初的父类到最终的子类都不能创建对象,失去意义
接口
所有方法都是抽象方法。
修饰符 interface 接口名{
}
Java语言每个类可以实现多个接口。
实现:implements
修饰符 class 类名 implements 接口1,接口2,...{
}
对象名 instanceof 接口名