一、继承
1、Java语言每一类只能继承一个父类
2、关键词为:extends
3、所以类的构造方法第一行都有一个隐藏的“super();”
作用是在执行该构造方法之前调用其父类构造方法
例7.1
例7.2
public class Telephone {
String button ="button:0~9";
void call() {
System.out.println("开始拨打电话");
}
}
public class Moblie extends Telephone {//手机类继承电话类
String screen = "screen:液晶屏";//成员属性,液晶屏幕
}
public class Demo2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Moblie motto = new Moblie();//子类调用父类属性
System.out.println(motto.button);//子类调用父类没有的属性
System.out.println(motto.screen);//子类调用父类方法
motto.call();
}
}
二、Object类
1、getClass()方法
getClass()方法是Object类定义的方法,它会返回对象执行时的Class实例,然后使用此实例调用getName()方法可以取得类的名称。
2、toString()方法
返回参数相同,方法名相同,传入参数相同,方法体不同
将一个对象返回为字符串形式,它会返回一个string 实例。当这个类换为字符串或与字符串连接时,将自动调用重写的toString()方法。
例7.3
3、equals()方法
在Java语言中,有两种比较对象方式,分别为”==“运算符与equals()方法。equals()方法比较的是两个对象的实际内容。
例7.4
三、对象类型的转换
1、向上转型
将子类类型的对象转换为父类类型的对象
2、向下转型
将父类类型的对象转换为子类类型的对象
需要借助强制类型转换
例7.6
四、方法的重载
方法名相同,参数不同
例7.8
例7.9
五、final关键字
1、final修饰变量——不可以被修改(常量)
例7.10
2、final修饰方法——不可以被重写
例7.11
3、final修饰类——不可以被继承
六、instanceof关键字
对象名 instanceof类名
判断该对象是否属于该类或其子类
例7.7
七、多态
例7。12
八、接口
抽象方选没有方法体,这个方法本身没有任何意义,除非它被重写,而承载这个抽象方法的抽象类必须被继系。实际上抽象类除了被继承没有任何意义。
只要类中有一个抽象方法,此类就被标记为抽象类。抽象类被继承后需要实现其中所有的抽象方法,也就是保证以相同的方法名称、参数列表和返回值类型创建出非抽象方法,当然也可以是抽象方法。下图说明了抽象类的继承关系。
接口所有方法都是抽象方法
修饰符inter face 接口名{}实现implements
java语言每个类可以实现多个接口
修饰符 class 类名 implements 接口1,接口2,接口3,.....{}
接口是抽象类的延伸,可以将它看作是纯粹的抽象类,接口中的所有方法都没有方法体。对于7.8.1节中遗留的问题,可以将draw()方法封装到一个接口中,使需要draw()方法的类实现这个接口,同时也继承图形类,这就是接口存在的必要性。在图7.11中,描述了各个子类继承图形类后使用接口的关系。
public:接口可以像类一样被权限修饰符修饰,但public关键字仅限于接口在与其同名的文件中被定义。
interface:定义接口关键字。
Paintable:接口名称。
一个类继承一个父类的同时再实现一个接口。
例7.13
interface Paint{//可绘制接口
public void draw();//绘制抽象方法
}
class Qu{//四边形类
public void doAnytihing() {
System.out.println("四边形提供的方法");
}
}
//平行四边形类,继承四边形类,并实现可绘制接口
class Par extends Qu implements Paint{
public void draw() {
//由于该类
System.out.println("绘制平行四边形");
}
}
//正方形类,继承四边形类,并实现可绘制接口
class Sq extends Qu implements Paint{
public void draw() {
System.out.println("绘制正方形");
}
}
//圆形类,仅实现可绘制接口
class Cir implements Paint{
public void draw() {
System.out.println("绘制圆形");
}
}
public class Pa {
public static void main(String[] args) {
// TODO Auto-generated method stub
Sq s=new Sq();
s.draw();
s.doAnytihing();
Par p=new Par();
p.draw();
p.doAnytihing();
Cir c = new Cir();
c.draw();
}
}