Java面向对象的三大特性有:1.继承 2.多态 3.封装
Java多态的特性是由:方法重载,继承,方法重写,自动转型等技术
所引起的问题。
1、Java的继承语法格式
Java继承的关键字是:extends
格式:
public class 子类名 extends 父类名 {
}
注意:Java中类的继承是单继承。一个子类值只可以有一个父类。但可以有多重继承,即子类还可以派 生出子类
2、子类继承父类后,那么子类就继承到了父类所有的属性和方法。
子类继承父类后,子类和子类的对象能直接调用的属性和方法分为两种情况:
1.子类和父类在同一包下:
1.私有的属性,方法以及构造方法是不能被子类的对象(子类对象)直接调用的。
2.默认的,受保护的和共有的属性以及方法都可以被子类的对象以及子类直接调用。
2.子类和父类在不同的包下:
在子类的{}中,只有公有的,受保护的属性和方法能在子类中直接调用。
子类对象调用方法时,那么只有公有的属性和方法能被子类对象调用。
访问修饰符 范围
private 在类的{}里边
默认的 在同包的任何类中。
protected 在同包下和不同包下是,受保护的属性、方法可以在子类的{}里边调用。
public 只要是一个项目(工程)中的类都可以直接调用。
3、继承的作用:
1.提高代码的重用性。
2.提高程序的扩展性。
4、方法重写
条件:必须要存在一个继承关系。
子类在重写方法时,子类重写的方法要和父类的方法名,返回值类型,参数类型、个数、顺序完全一致。
方法体要与父类的不同。
调用方法的时候,new关键字创建的实体是谁就会优先调用谁的构造方法和方法,当调用的方法子类中没有的时候就会调用父类中的属性和方法。
例如:在Man方法中
public void giveFlower(){
System.out.println(getName()+"送给她一朵花");
}
在子类Boy方法中
public void giveFlower(){
System.out.println(getName()+"在"+getAge()+"的时候送给她一朵花");
}
这就是方法重写,当在子类Boy中重写了方法giveFlower方法。那么在创建了一个Boy类的实体后,调用 giveFlower方法时,会有“xx在xx的时候送给她一朵花”,实现了子类中的方法,不再使用父类中的方法了。
注意:当实现继承后,在子类中也可以实现方法重载。
Java多态的特性是由:方法重载,继承,方法重写,自动转型等技术
所引起的问题。
1、Java的继承语法格式
Java继承的关键字是:extends
格式:
public class 子类名 extends 父类名 {
}
注意:Java中类的继承是单继承。一个子类值只可以有一个父类。但可以有多重继承,即子类还可以派 生出子类
2、子类继承父类后,那么子类就继承到了父类所有的属性和方法。
子类继承父类后,子类和子类的对象能直接调用的属性和方法分为两种情况:
1.子类和父类在同一包下:
1.私有的属性,方法以及构造方法是不能被子类的对象(子类对象)直接调用的。
2.默认的,受保护的和共有的属性以及方法都可以被子类的对象以及子类直接调用。
2.子类和父类在不同的包下:
在子类的{}中,只有公有的,受保护的属性和方法能在子类中直接调用。
子类对象调用方法时,那么只有公有的属性和方法能被子类对象调用。
访问修饰符 范围
private 在类的{}里边
默认的 在同包的任何类中。
protected 在同包下和不同包下是,受保护的属性、方法可以在子类的{}里边调用。
public 只要是一个项目(工程)中的类都可以直接调用。
3、继承的作用:
1.提高代码的重用性。
2.提高程序的扩展性。
4、方法重写
条件:必须要存在一个继承关系。
子类在重写方法时,子类重写的方法要和父类的方法名,返回值类型,参数类型、个数、顺序完全一致。
方法体要与父类的不同。
调用方法的时候,new关键字创建的实体是谁就会优先调用谁的构造方法和方法,当调用的方法子类中没有的时候就会调用父类中的属性和方法。
例如:在Man方法中
public void giveFlower(){
System.out.println(getName()+"送给她一朵花");
}
在子类Boy方法中
public void giveFlower(){
System.out.println(getName()+"在"+getAge()+"的时候送给她一朵花");
}
这就是方法重写,当在子类Boy中重写了方法giveFlower方法。那么在创建了一个Boy类的实体后,调用 giveFlower方法时,会有“xx在xx的时候送给她一朵花”,实现了子类中的方法,不再使用父类中的方法了。
注意:当实现继承后,在子类中也可以实现方法重载。