首页 / JAVA / JAVA基础(方法重写)
JAVA基础(方法重写)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JAVA基础(方法重写),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5279字,纯文字阅读大概需要8分钟。
内容图文
![JAVA基础(方法重写)](/upload/InfoBanner/zyjiaocheng/801/092f66118b3742bfb16bee76f9a2089c.jpg)
1,什么是方法重写
-
重写:子父类出现了一模一样的方法(注意:返回值类型可以是子父类)
2,方法重写的应用:
-
当子类需要父类的功能,而功能主体子类有自己特有内容时,可以重写父类中的方法。这样,即沿袭了父类的功能,又定义了子类特有的内容。
【1】案例
class Demo7_Phone {
????public static void main(String[] args) {
????????Ios8 i = new Ios8();
????????i.siri();
????????i.call();
????}
}
/*
B:方法重写的应用:
???* 当子类需要父类的功能,而功能主体子类有自己特有内容时,可以重写父类中的方法。这样,即沿袭了父类的功能,又定义了子类特有的内容。
????ios7系统 siri speak English
????ios8系统 siri 说中文
*/
class Ios7 {
????public void call() {
????????System.out.println("打电话");
????}
????public void siri() {
????????System.out.println("speak English");
????}
}
class Ios8 extends Ios7 {
????public void siri() {
????????
????????System.out.println("说中文");
????????super.siri();
????}
}
3,方法重写的注意事项
【1】方法重写注意事项
-
父类中私有方法不能被重写
-
因为父类私有方法子类根本就无法继承
-
-
子类重写父类方法时,访问权限不能更低,最好就一致
-
父类静态方法,子类也必须通过静态方法进行重写
-
其实这个算不上方法重写,但是现象确实如此,至于为什么算不上方法重写,多态中我会讲解(静态只能覆盖静态)
-
-
子类重写父类方法的时候,最好声明一模一样。
4,方法重写和方法重载
【1】Override和Overload的区别?Overload能改变返回值类型吗?
-
overload可以改变返回值类型,只看参数列表
-
方法重写:子类中出现了和父类中方法声明一模一样的方法。与返回值类型有关,返回值是一致(或者是子父类)的
-
方法重载:本类中出现的方法名一样,参数列表不同的方法。与返回值类型无关。
【2】子类对象调用方法的时候:
* 先找子类本身,再找父类。
5,案例
【1】没有使用继承时
class Test3_Person {
????public static void main(String[] args) {
????????System.out.println("Hello World!");
????}
}
/*
* 使用继承前的学生和老师案例
????* 属性:姓名,年龄
????* 行为:吃饭
????* 老师有特有的方法:讲课
????* 学生有特有的方法:学习
*/
class Student {
????private String name;????????????????????//姓名
????private int age;????????????????????????//年龄
????public Student() {}????????????????????????//空参构造
????public Student(String name,int age) {????//有参构造
????????this.name = name;
????????this.age = age;
????}
????public void setName(String name) {????????//设置姓名
????????this.name = name;
????}
????public String getName() {????????????????//获取姓名
????????return name;
????}
????public void setAge(int age) {????????????//设置年龄
????????this.age = age;
????}
????public int getAge() {????????????????????//获取年龄
????????return age;
????}
????public void eat() {????????????????????????//吃饭
????????System.out.println("学生吃饭");
????}
????public void study() {????????????????????//学习
????????System.out.println("学生学习");
????}
}
class Teacher {
????private String name;????????????????????//姓名
????private int age;????????????????????????//年龄
????public Teacher() {}????????????????????????//空参构造
????public Teacher(String name,int age) {????//有参构造
????????this.name = name;
????????this.age = age;
????}
????public void setName(String name) {????????//设置姓名
????????this.name = name;
????}
????public String getName() {????????????????//获取姓名
????????return name;
????}
????public void setAge(int age) {????????????//设置年龄
????????this.age = age;
????}
????public int getAge() {????????????????????//获取年龄
????????return age;
????}
????public void eat() {????????????????????????//吃饭
????????System.out.println("老师吃饭");
????}
????public void teach() {????????????????????//学习
????????System.out.println("老师讲课");
????}
}
【2】使用继承后
class Test4_Person {
????public static void main(String[] args) {
????????Student s1 = new Student();
????????s1.setName("张三");
????????s1.setAge(23);
????????System.out.println(s1.getName() + "..." + s1.getAge());
????????s1.eat();
????????s1.study();
????????System.out.println("------------------");
????????Student s2 = new Student("李四",24);
????????System.out.println(s2.getName() + "..." + s2.getAge());
????????s2.eat();
????????s2.study();
????}
}
/*
* 使用继承后的学生和老师案例
*/
class Person {
????private String name;????????????????????//姓名
????private int age;????????????????????????//年龄
????public Person() {}????????????????????????//空参构造
????public Person(String name,int age) {????//有参构造
????????this.name = name;
????????this.age = age;
????}
????public void setName(String name) {????????//设置姓名
????????this.name = name;
????}
????public String getName() {????????????????//获取姓名
????????return name;
????}
????public void setAge(int age) {????????????//设置年龄
????????this.age = age;
????}
????public int getAge() {????????????????????//获取年龄
????????return age;
????}
????public void eat() {????????????????????????//吃饭
????????System.out.println(name??+ "吃饭");
????}
}
class Student extends Person {
????public Student() {}????????????????????????//空参构造
????public Student(String name,int age) {
????????super(name,age);
????}
????
????public void eat(){
????????System.out.println(this.getName()??+ "学生吃饭");
????}
????public void study() {
????????System.out.println(this.getName() + "学习");
????}
}
class Teacher extends Person {
????public Teacher() {}????????????????????????//空参构造
????public Teacher(String name,int age) {
????????super(name,age);
????}
????
????public void eat(){
????????System.out.println(this.getName()??+ "老师吃饭");
????}
????public void teach() {
????????System.out.println(this.getName() + "讲课");
????}
}
内容总结
以上是互联网集市为您收集整理的JAVA基础(方法重写)全部内容,希望文章能够帮你解决JAVA基础(方法重写)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。