java—继承

继承

定义:继承是面向对象的三大特征之一(封装,继承,多态),可以让子类继承父类的属性和方法。
父类:(基类,超类)
子类:(派生类)
格式:

public class 子类名 extends 父类名{
}

父类:

package extend;

public class father {
    int age = 20;
     String f_name = "zhang";
    public  father(){//构造方法,可写可不写
    	System.out.println("father无参构造方法");
    }
    public   father(int age ){
        System.out.println("father带参构造方法:"+age);
    }
    public void  play(){//父类中的方法
        System.out.println("游戏真好玩");
    }
}

子类:子类继承父类属性,若子类与父类名相同则用自己的变量
这时可以用super.父类变量
super.(属性,方法,构造方法)表示访问父类的,
this表示本类的(应用于局部变量和成员变量里)

package extend;

public class son extends father{
    int age = 12;
    public  son (){
    	System.out.println("son无参构造方法");
    }
    public void eat(){//子类中方法
        System.out.println("我需要次");
        //子类直接调用了父类的属性
        System.out.println(f_name);
        //子类用super调用与父类同名的变量
        System.out.println(super.age);
    }
}

测试类:

package extend;

public class test {
    public static void main(String[] args) {
        father p = new father();//父类实例化对象
        //子类实例化会先调用父类的无参构造
        son s = new son();//子类实例化对象
        System.out.println(p.age);//调父类属性
        s.eat();
        //由于子类继承了父类,所有子类可以调用了父类方法
        s.play();
        
    }
}

结果
在这里插入图片描述

构造方法特点:
子类在初始化之前,都会先完成父类数据的初始化,所有先调用父类的无参构造方法:推荐代码有参构造方法都写无参构造方法,否则没有
对super的调用必须是构造器中的第一个语句

好处:提高代码复用性,和维护性,修改父类代码,子类都改变了
缺点:修改父类代码,子类都改变了,耦合性增加,子类独立性减弱

一般情况下使用小类继承大类,狗继承动物,儿子继承父亲;

方法重写(在继承关系中):

@Override:检测方法重写正确性:
父类:

package extend;

public class father {
    int age = 20;
    String f_name = "zhang";
    public void  play(){
        System.out.println("游戏真好玩");
    }

}

子类:

package extend;

public class son extends father {
    int age = 12;
	//对父类中play()方法重写了
    public void play() {
        System.out.println("我需要次");
        //System.out.println("游戏真好玩");
        super.play();//同上一行代码效果一样
    }
}

测试类:

package extend;

public class test {
    public static void main(String[] args) {
        father p = new father();
        son s = new son();
        s.play();
    }
}

总结:不能重写私有的方法;重写写权限不能比父类方法权限低(public >默认> private)

继承:一个类只能继承一个父类,但是可以多层继承,A继承B继承C,A就可以使用C中属性和方法。争对不能多继承,接口解决了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gun_wqy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值