java继承性使用及注意事项

java中类的继承特性

继承性

主要是利用特定对象之间共有的属性和行为,根据这些属性和行为组成一个公共类(父类)。然后根据父类进行拓展,也就是在父类原有的属性和行为上加上新的特性,制定出一个新的类(子类)。子类可以重写父类的方法。

继承格式:

权限修饰符 class 子类名称 extends 父类名称(){}
public class zi extends fu(){}

注意事项:

1.子类可以重写父类的权限修饰符,但是仅限于从小的范围到大的范围改变,保证子类权限修饰符必须保证【大于等于】父类权限修饰符。
小扩展提示: public > protected > (default) > private
2. 子类调用父类的内容通过super关键词进行调用。
3.子类不可以调用父类带有private权限修饰符的内容。
4.子类可以重写父类的方法和发返回值类型,重写的时候必须保证父子类方法名称及参数名称相同,但仅限于J2SE.5.0以上版本。

package day6;
public class day6 {
    public static void main(String[] args) {
        fu fu=new fu();
        fu.method();
        zi zi=new zi();
        zi.method();
        fu.method();//子类重写父类的方法,仅对子类本身有效,对父类没有影响。
    }
    //父类文件
    public class fu{
        int num=20;
        private String name="私有不能被调用";
        protected void method(){
            System.out.println("我是一个手机,我能电话");
            System.out.println("------------------------------");
        }
    }
    //子类文件
    public class zi extends fu{//继承父类
        //将父类的method方法权限修饰符修改为public,private void method(){}错误写法。
        public void method(){//4.方法名称必须相同
            //使用super关键词调用父类的变量num
            System.out.println("我调用了父类的num值:"+super.num); //2使用super调用父类
            super.method();//调用父类原有的方法的内容
            System.out.println("我是一个新手机,我还能发信息,");
        }
    }
}

5.在继承中,父类的变量和方法在没有特殊说明下,子类可以使用,子类的子类也可以使用。

运行文件
public  class  animalMain  {
    public static void main(String[] args) {
        jinmao jinmao=new  jinmao();//创建对象
        jinmao.eat();
        jinmao.sleep();
    }
}
父类文件
public class  animal {
    public void sleep();
    public void eat();
}
子类文件
public class dog extends  animal {
    public void eat(){
        System.out.println("吃肉");
    }
}
子类的子类文件
public class  jinmao extends dog{
    public void sleep(){
        System.out.println("二哈真二");
    }
    public void eat(){
        System.out.println("我喜欢吃骨头");
    }
}

继承中变量和方法重名如何区别?

    public static void main(String[] args) {
        zi zi=new zi();
        zi.method();//调用子类的方法
    }
    //父类文件
    public class fu{
        int num=10;//父类变量
    }
    //子类文件
    public class zi extends fu{
        int num=20;//子类成员变量
        @Override
        public void method(){
            int num=30;//子类局部变量
            System.out.println("我是子类的局部变量"+num);
            System.out.println("我是子类的成员变量"+this.num);//调用本身用this
            System.out.println("我是父类的成员变量"+super.num);//调用父类用super
        }
    }
}

你可能感兴趣的:(java)