Java中面向对象的封装,继承,重载重写
Java中面向对象的封装,继承,重载重写
封装的定义
封装从字面意思理解就是包装,专业说法就是隐藏信息,是指将数组和对数据的操作封装在一起,尽可能的隐藏细节,只保留对外的通道使之与外部发生关联。也就是说,用户是无法知道对象内部的细节,但是可以通过该对象对外提供的访问通道来访问该对象。
封装的特点
把类的属性隐藏,提供公共方法对其访问
提高了代码的复用性
提高了代码的安全性
示例:银行存钱
继承
继承的定义
Java中使用extends关键字实现类的加载机制称之为继承,子类自动拥有了基类(也叫父类,superclass)的所有非私有成员,即成员变量和成员方法
继承的好处
引入继承可以减少重复的代码量,提高代码和开发的效率
继承需注意的点
如果父类中的变量是private私有变量,那么子类中就不可以调用父类中的变量,只能在父类的方法中调用,子类和其他类都不可以。
Java只支持单继承,不支持多继承,即:一个子类只有一个父类(基类)。
子类对象包含父类对象
静态方法是不可以继承的
示例:自行车和公路赛
自行车类
public classBike {
public int wheels= 2; //轮子数量
public voidrun(){
System.out.println("自行车都能跑");
}
}
变速自行车类
public classRaceBike extends Bike {
public int gear= 2; // 齿轮个数
public voidspeedUp() {
System.out.println("变速自行车可以加速");
}
public voidspeedDown() {
System.out.println("变速自行车可以减速");
}
}
测试类
public classTest {
public static voidmain(String[] args) {
RaceBike bike= new RaceBike();
int wheels= bike.wheels;//获取父类的成员变量wheels
int gears= bike.gear;
System.out.println("变速车的轮子数量是:"+ wheels);
System.out.println("变速车的齿轮数是:"+ gears);
bike.run(); //调用父类的跑的方法
bike.speedUp();
bike.speedDown();
}
}
重载
重载的定义
方法的重载是指同一个类里同一个方法不同参数,在测试类里通过调用同方法,给予不同的参数,方法的重载即:同名不同参
其中参数不同指的是参数类型或者是参数个数不同,
构造方法也可以重载
示例:
public classStudent {
public voidintro(String name) {
System.out.println("我叫"+ name);
}
public voidintro(int age){
System.out.println("我今年"+ age + "岁");
}
public voidintro(String name, int age){
System.out.println("我叫"+ name + "今年"+ age + "岁");
}
}
重写
方法重写的定义
方法重写是基于继承,子类继承父类,子类可以调用父类的方法,同时子类也可以重写父类的方法,实现与父类不同的业务逻辑。子类与父类的方法,相同方法名,相同的参数类型,相同的参数。这样调用子类的方法时,父类的方法就会被覆盖。即:同名又同参
示例:动物会叫,叫声各不相同
动物类
public classAnimal {
public voidspeek(){
System.out.println("动物都会叫");
}
}
狗类,继承自动物类
classDog extends Animal {
/**
* 重写父类的speek方法
*/
@Override
public voidspeek() {
System.out.println("旺旺旺...");
}
}
猫类,继承自动物类
classCat extends Animal {
/**
* 重写父类的speek方法
*/
@Override
public voidspeek() {
System.out.println("喵喵喵...");
}
}