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

基础篇之继承,重写,重载

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

基础篇之继承,重写,重载

    突然心血来潮想写一写基础篇章的东西,正所谓基础不牢,地动山摇。想必很多学编程的小伙伴有时候也会对一些基础知识困惑吧!

    首先我们来了解一下继承,简单地来说,继承就是子类继承了父类当中的方法,比如父类会打拳,然后子类继承了父类之后,子类就学会了打拳。

看下面的代码

package zuoye;


 class Person{
	 public void methods() {
		 System.out.println("我是父类,会打拳");
	 }
 }
 class Son extends Person{
	 
 }
 public class ceshia {
 public static void main(String[] args) {
	Son s = new Son();
	s.methods();
 }
 

}

执行代码结果如下

 这个就是继承,我们new了一个子类的对象,子类对象是可以调用到父类的methods方法的。

这里子月有一个问题,那构造方法能被继承吗? 大家思考一下。

package zuoye;
class Person{
	//父类的构造器
	public Person() {
	   
	}
}
class Son extends Person{
	//子类构造器
	public Son() {
 //调用父类的构造器
		super();
	}
	//看到没有这里报错了 这里是有严格的规定的,父类的构造器只能被子类的构造器所调用
	public void method() {
		//这里就报错了
		super();
	}
	 
}
public class gouzao {
public static void main(String[] args) {
	
}
}

这里又提到了super关键字的使用,super可以在调用父类构造方法的时候使用。

super 还可以访问父类的成员属性和成员方法

当子类的成员变量或方法与父类同名时,可以使用 super 关键字来访问。如果子类重写了父类的某一个方法,即子类和父类有相同的方法定义,但是有不同的方法体,此时,我们可以通过 super 来调用父类里面的这个方法。

super调用成员属性

package gouzaos;

class Person {
    int age = 12;
}
class Student extends Person {
    int age = 18;
    void display() {
        System.out.println("学生年龄:" + super.age);
    }
}
public class asd  {
    public static void main(String[] args) {
        Student stu = new Student();
        stu.display();
    }
}

运行结果为

 

在上面的例子中,父类和子类都有一个成员变量 age。我们可以使用 super 关键字访问 Person 类中的 age 变量。

super调用成员方法

package gouzaos;

class Person {
    void message() {
        System.out.println("This is person class");
    }
}
class Student extends Person {
    void message() {
        System.out.println("This is student class");
    }
    void display() {
        message();
        super.message();
    }
}
public class asd {
    public static void main(String args[]) {
        Student s = new Student();
        s.display();
    }
}

运行结果如下

 

在上面的例子中,可以看到如果只调用方法 message( ),是当前的类 message( ) 被调用,使用 super 关键字时,是父类的 message( ) 被调用。

接下来是重写,重写就是方法头相同,方法体不同。

package gouzaos;


class Person{
	public void methods() {
		System.out.println("我可以吃饭");
	}
}
class Sona extends Person{
	public void methods() {
		System.out.println("我重写了父类的吃饭方法");
	}
	
}
public class asd {
public static void main(String[] args) {
	Sona son = new Sona();
	son.methods();
}


}

代码的执行结果就是

 老样子 那么构造方法中能进行重写吗?

package gouzaos;


class Person{
	public Person() {
		
	}
}
class Sona extends Person{
	//哎呀 报错了 所以是不能被重写的
	public Person() {
		System.out.println("构造器中的重写");
	}
	
}
public class asd {
public static void main(String[] args) {
	
	
}


}

重载 就是方法名相同参数列表不同

package gouzaos;

public class asd {
public static void main(String[] args) {
System.out.println(sum(10,20));
System.out.println(sum(10,20,30));	
	
}
public static int sum(int a,int b) {
	return a+b;
}
public static int sum(int a,int b,int c) {
	return a+b+c;
}


}

那么还是老问题 在构造方法中呢?

package gouzaos;

public class asd {
public static void main(String[] args) {
	
}
class Person{
	public Person() {
		
	}
	public void Person(String name) {
		
	}
}

}

这个是可以的,大家看到并没有报错。

是不是根据这几个简单的例子,大家对于继承,重载,重写有一种豁然开朗的感觉呢?有什么疑惑欢迎大家在评论区留言哦!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/287547.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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