栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java -- 继承

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java -- 继承

继承的本质:复用已存在的字段和域

继承:子类继承父类的行为特征,使得子类实例具有父类的实例和域

Student类继承了Person类,Student new出来的实例,就可以直接调用run方法。

public class Person {
	
	public void run() {
		System.out.println("任何人都可以跑。。。");
	}
}

class Student extends Person{
	
	private void eat() {
		System.out.println("学生正在吃。。。。");
	}
	
	public static void main(String[] args) {
		Student student = new Student();
		student.run();
		student.eat();
	}
	
}

子类可以调用父类的方法,但是父类不可以调用子类的方法。子类比超类功能更加的丰富。


方法的重载和重写 

1、方法重载

方法具有相同的名字,但是方法的参数列表,返回值不同就产生了方法的重载 

方法重写 

方法重写,一般是说子类重写父类或者接口的方法,就是在父类里定义了方法,在子类中写的方法参数列表,返回值全部相同就实现了方法的重写。

此时调用run方法,就是调用的子类的run方法。子类重写了父类的run方法。

public class Person {
	
	public void run() {
		System.out.println("任何人都可以跑。。。");
	}
}

class Student extends Person{
	public void run() {
		System.out.println("这个学生在跑。。。");
	}
	
	private void eat() {
		System.out.println("学生正在吃。。。。");
	}
	
	public static void main(String[] args) {
		Student student = new Student();
		student.run();
		student.eat();
	}
	
}

重载和重写的区别

重载: 发生在同一个类中,方法名必须相同,参数类型不同、个数不同、顺序

不同,方法返回值和访问修饰符可以不同,发生在编译时。

重写: 发生在父子类中,方法名、参数列表必须相同,返回值范围小于等于父

类,抛出的异常范围小于等于父类,访问修饰符范围大于等于父类;如果父类

方法访问修饰符为 private 则子类就不能重写该方法。


关键字super:可以调用父类的构造方法,要放到子类的方法中,可以调用父类的构造方法和普通方法。调用构造方法时,调用构造器语句的时候只能作为另一个构造器的第一条语句出现。

package test;

public class Person {

      public void run() {
        System.out.println("任何人都可以跑。。。");
    }
    public static void get() {
        System.out.println("getda。");
    }
}

class Student extends Person{
    public void run() {
        super.run();
        System.out.println("这个学生在跑。。。");
    }

    private void eat() {
        System.out.println("学生正在吃。。。。");
    }

    public static void main(String[] args) {
        Student student = new Student();
        student.run();
        student.eat();
        get();

    }

}

 


由一个公共超类派生出来的所有类的集合被称为继承层次,在继承层次当中,从某个特定的类到其祖先的路径被称为继承链,但是一定要注意java是单继承的。

类的加载顺序

程序的运行首先会去找main方法,找到main方法,发现new Test的实例,然后去找Test类,加载Test类时,发现继承了base类,然后去加载base类,在base中先执行static块,然后回到Test类执行static块。加载完俩个类后,回到主程序,再调用构造方法。先调用父类的构造方法,然后再调用子类的构造方法。

package test;

public class Test extends base{

    static{
        System.out.println("test static");
    }

    public Test(){
        System.out.println("test constructor");
    }

    public static void main(String[] args) {
        new Test();
    }
}

class base{

    static{
        System.out.println("base static");
    }

    public base(){
        System.out.println("base constructor");
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/736031.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号