Java基础学习-extends继承(成员变量,局部变量,成员方法)

时间:2021-07-21 23:48:09
package extend;
/*面向对象-继承:
 *         多个类的共同成员变量和成员方法。抽取到另一个类中(父类),我们多个类就可以访问到父类的成员了
 * */
class Game{
    String name;
    double vesion;//版本号
    String agent;//代理商
    public void start() {
        System.out.println("游戏启动");
    }
    public void stop() {
        System.out.println("游戏关闭");
    }
}
class CF extends Game{

}
class LOL extends Game {

}
public class extend {
    public static void main(String[] args) {
        CF cf=new CF();
        cf.start();
        LOL lol=new LOL();
        lol.start();
    }
}

初步的认识后,现在来看下继承在java中的特点

package extend;

class update{
    public void update() {
        System.out.println("更新了");
    }
}
class QQspeedandchuangqi extends update{
    public void start() {
        System.out.println("game start.....");
    }
    public void stop() {
        System.out.println("game stop.....");
    }
}
class QQspeed extends QQspeedandchuangqi{

}
class Chaungqi extends QQspeedandchuangqi{

}

public class extends_java_special {
    public static void main(String[] args) {
        QQspeed qqspeed=new QQspeed();
        Chaungqi chaungqi=new Chaungqi();
        qqspeed.update();
        qqspeed.start();
        qqspeed.stop();
    }
}在以上代码中我们可以发现,java中的继承,不能实现一对多个父类,而可以多层次的继承。

继承中的成员变量,局部变量的特点:

package extend;
class parents{
    private String name="我是parents的成员变量";
}
class Father extends parents{
    public void speak() {
        System.out.println("我叫"+name);
    }
}
public class extends_member {
    public static void main(String[] args) {
        Father father=new Father();
        father.speak();
    }
}
/*在上述代码中  子类(Father类)继承了parents(父类),父类中有私有变量name,但是子类访问不了父类的私有变量,所以那么会报错*/
package extend;
class parents{
    String name="我是parents的成员变量";
}
class Father extends parents{
    String name="我是Father的成员变量";
    public void speak() {
        System.out.println("我叫"+name);
    }
}
public class extends_member {
    public static void main(String[] args) {
        Father father=new Father();
        father.speak();
    }
}
/*在上述代码中  子类(Father类)继承了parents(父类),父类中有成员变量name,但是子类也有成员变量name,
 * 此时的打印输出为:我叫我是Father的成员变量
 * 所以在同一个名称的成员变量下,对象访问的应该是子类的成员变量
 */
package extend;
class parents{

}
class Father extends parents{
    String name="我是Father的成员变量";
    public void speak() {
        String name="我是Father的局部变量";
        System.out.println(name);
    }
}
public class extends_member {
    public static void main(String[] args) {
        Father father=new Father();
        father.speak();
    }
}
/*在上述代码中  子类(Father类)继承了parents(父类),父类中有成员变量name1,但是子类也有成员变量name2,
 * 此时的打印输出为:我叫我是Father的局部变量
 * 所以在有局部变量的时候就用局部变量,遵循就近原则
 */

总结下继承中的成员变量,局部变量的特点:
1.子类(Father类)继承了parents(父类),父类中有私有变量name,但是子类访问不了父类的私有变量。2.子父类中有相同名称成员变量,则依照就近原则,用子类的成员变量3.子父类中有不通的名称成员变量,则使用父类中的成员变量4.如果有局部变量就是用局部变量super:可以访问父类的成员this:引用当前对象

接下来是继承中的成员方法特点:

子类没有方法:package extend;
class parents{
    public void speak() {
        System.out.println("父母");
    }
}
class Father extends parents{
}
public class extends_member {
    public static void main(String[] args) {
        Father father=new Father();
        father.speak();
    }
}
子类有同名方法
package extend;
class parents{
    public void speak() {
        System.out.println("父母");
    }
}
class Father extends parents{
    public void speak() {
        System.out.println("爸爸");
    }
}
public class extends_member {
    public static void main(String[] args) {
        Father father=new Father();
        father.speak();
    }
}

/*如果子类中有这个方法,那么会进行方法的重写,覆盖父类方法,因为父类的方法不一定子类都具备。
如果子类没有方法,那么就会使用父类的方法。*/