Java基础知识——继承中成员变量和成员方法的特点、方法重写-创新互联

一 继承中:成员变量的访问特点

1.继承中,访问成员变量的特点:就近原则

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名注册、虚拟空间、营销软件、网站建设、龙马潭网站维护、网站推广。

依次在 局部位置找,本类成员位置找,父类成员位置找,逐级往上.

2.出现重名的成员变量怎么办?

System.out.println(name);           //就近原则:从局部位置开始找
System.out.println(this.name);      //this:从本类成员变量位置开始找
System.out.println(super.name);     //super:从本类继承的父类的成员位置开始找
public class Test {
    public static void main(String[] args) {
    Zi z = new Zi();
    z.ZiShow();

    }
}


class Fu{
    String name = "Fu";

}

class Zi extends Fu{
    String name = "Zi";

    public void ZiShow(){
        String name = "ZiShow";
        System.out.println(name);           //就近原则:ZiShow
        System.out.println(this.name);      //this:从本类成员变量位置开始找:Zi
        System.out.println(super.name);     //super:从本类继承的父类的成员位置开始找:Fu
    }

二 继承中:成员方法的访问特点

1.直接调用满足就近原则.

2.super调用,直接访问父类.

public class Test {
    public static void main(String[] args) {
        Student s = new Student();
        s.lunch();

    }
}


class Person{

    public void eat(){
        System.out.println("吃米饭,吃菜");
    }

    public void drink(){
        System.out.println("喝开水");
    }

}


class Student extends Person{

    public void lunch(){
        //使用this关键字:先在本类中查看eat和drink方法,如果没有,就会调用从父类继承下来的方法.
        this.eat();             //吃米饭,吃菜
        this.drink();           //喝开水

        //使用super关键字:直接从父类中调用方法
        super.eat();           //吃米饭,吃菜
        super.drink();         //喝开水
    }

}
三 方法的重写

1.适用情况:当父类方法不能满足子类现在的需求时,需要进行方法的重写

2.书写格式:在继承体系中,子类出现和父类一模一样的方法声明,就称子类这个方法是 重写的方法.

3.@Override重写注释:把这个注释加在重写方法上,虚拟机会校验子类重写时语法是否正确.

4.方法重写的要求:

①重写方法的 名称、形参列表 必须与父类中的一致.

②子类重写父类方法时,访问权限子类必须大于等于父类空着不写

③子类重写父类方法时.返回值类型必须小于等于父类

④建议:重写的方法尽量和父类保持一致.

⑤只有被添加到虚方法表中的方法(非private,非static,非final修饰的方法)才能被重写.

练习:

画图设计继承结构:

代码:

父类

public class Dog {

    public void eat(){
        System.out.println("吃狗粮");
    }

    public void drink(){
        System.out.println("喝水");
    }

    public void guard(){
        System.out.println("看家");
    }


}

三个子类

public class Huskie extends Dog {
    public void breakHome(){
        System.out.println("拆家");
    }
}




public class Sharpei extends Dog{

    @Override
    public void eat(){
        super.eat();        //在父类的基础上,又添加了其他行为,直接调用父类的行为就行.
        System.out.println("吃骨头");
    }

}

public class ChineseDog extends Dog{

    //中华田园犬完全用不到父类中的代码,所以不用super
    @Override
    public void eat(){
        System.out.println("吃剩饭");
    }
}

测试类:

public class Test {
    public static void main(String[] args) {
        Huskie h = new Huskie();
        h.eat();
        h.drink();
        h.guard();
        h.breakHome();

        Sharpei s = new Sharpei();
        s.eat();
        s.drink();
        s.guard();

        ChineseDog c = new ChineseDog();
        c.eat();
        c.drink();
        c.guard();

    }
}

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


本文题目:Java基础知识——继承中成员变量和成员方法的特点、方法重写-创新互联
转载注明:http://azwzsj.com/article/ddesgj.html