当前位置: 首页 > news >正文

方法重写111

方法重写/覆盖

基本介绍:方法覆盖(重写)就是子类有一个方法,和父类的某个方法的名称、返回类型、参数一样,那么我们就说子类的这个方法覆盖了父类的方法。

注意事项:

1.子类的方法的参数,方法名称,要和父类方法的参数,方法名称完全一样

2.子类方法的返回类型和父类方法的返回类型一样,或者是父类返回类型的子类

   比如:父类 返回类型是 Object,子类方法返回类型是String

3.子类方法不能缩小父类方法的访问权限

重载和重写的比较

package Override_;public class Person{
private String name;
private int age;
public Person(String name,int age){this.name = name;this.age = age;
}
public String say(){return "name=" + name + "age= " +age;
}
}
package Override_;public class Student extends Person {private int id;private double score;public Student(String name, int age, int id, double score) {super(name, age);this.id = id;this.score = score;}public String say(){return super.say() + "id=" + id + "score=" + score;}public int getId() {return id;}public void setId(int id) {this.id = id;}public double getScore() {return score;}public void setScore(double score) {this.score = score;}
}
package Override_;public class OverrideExercise {public static void main(String[] args) {Person person = new Person("javk",10);System.out.println(person.say());Student student = new Student("lake", 13,2123,333);System.out.println(student.say());}
}

喂食动物代码

package Poly_;public class animal {private String name;public animal(String name){this.name = name;}public String getName() {return name;}public void setName(String name) {this.name = name;}
}
package Poly_;public class cat extends animal{public cat(String name) {super(name);}
}
package Poly_;public class dog extends animal{public dog(String name) {super(name);}
}
package Poly_;public class food {private String name;public food(String name){this.name = name;}public String getName() {return name;}public void setName(String name) {this.name = name;}
}
package Poly_;public class fish extends food {public fish(String name) {super(name);}
}
package Poly_;public class bone extends food{public bone(String name) {super(name);}
}
package Poly_;
public class master {private String name;public master(String name){this.name = name;}public String getName() {return name;}public void setName(String name) {this.name = name;}public void feed(dog dog,bone bone){System.out.println("主人 " + name + "给" + dog.getName() + "吃" + bone.getName());}public void feed(cat cat,fish fish){System.out.println("主人 " + name + "给" + cat.getName() + "吃" + fish.getName());}
}
package Poly_;
public class master {private String name;public master(String name){this.name = name;}public String getName() {return name;}public void setName(String name) {this.name = name;}public void feed(dog dog,bone bone){System.out.println("主人 " + name + "给" + dog.getName() + "吃" + bone.getName());}public void feed(cat cat,fish fish){System.out.println("主人 " + name + "给" + cat.getName() + "吃" + fish.getName());}
}

上转型对象

package Poly_.Dynamic_;public class DynamicBinding {public static void main(String[] args) {A a = new B();System.out.println(a.sum());System.out.println(a.sum1());}
}
class A{public int i = 10;public int sum(){return getI() + 10;}public int sum1(){return i + 10;}public int getI(){return i;}}
class B extends A{public int i = 20;public int sum(){return i + 20;}public int getI(){return i;}public int sum1(){return i + 10;}
}

40  30

数组多态

package Poly_.polyarr_;public class PloyArray {public static void main(String[] args) {
//        应用实例:现在有一个继承结构如下:要求创建1个Person数组
//        2个Student 对象 和 2个Teacher对象,统一放在数组中,并调用每个对象say方法Person[] persons = new Person[5];//父类的对象可以指向子类的引用persons[0] = new Person("jack",20);persons[1] = new Student("jack",20,100);persons[2] = new Student("smith",19,60);persons[3] = new Teacher("scott",30,200000);persons[4] = new Teacher("king",50,250000);//循环遍历多态数组for (int i = 0; i < persons.length; i++) {
//            person[i]编译类型时Person , 运行类型是根据实际情况由jvm来判断persons[i].say();  //动态绑定机制System.out.println(persons[i].say());}}
}
package Poly_.polyarr_;public class Person {private String name;private int age;public Person(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String say(){return name;}
}
package Poly_.polyarr_;public class Student extends Person{private double score;public Student(String name, int age, double score) {super(name, age);this.score = score;}public double getScore() {return score;}public void setScore(double score) {this.score = score;}@Overridepublic String say() {return super.say() + "score" + score;}
}
package Poly_.polyarr_;public class Teacher extends Person{private double salary;public Teacher(String name, int age, double salary) {super(name, age);this.salary = salary;}public double getSalary() {return salary;}public void setSalary(double salary) {this.salary = salary;}@Overridepublic String say() {return super.say() + "salary" + salary;}
}

验证代码:
package Object_;public class HashCode {public static void main(String[] args) {AA aa1 = new AA();AA aa2 = new AA();AA aa3 = aa2;System.out.println(aa1.hashCode());System.out.println(aa2.hashCode());System.out.println(aa3.hashCode());}
}
class AA{}

public class ToString {public static void main(String[] args) {Monster monster = new Monster("小妖怪","巡山的",1000);System.out.println(monster.toString() + "hashcode" + "  "+monster.hashCode());System.out.println("===============================================");System.out.println(monster);}
}
class Monster{private String name;private String job;private double sal;public Monster(String name, String job, double sal) {this.name = name;this.job = job;this.sal = sal;}@Overridepublic String toString() {//重写后,一般是把对象的属性值输出,当然程序员也可以自己定制return "Monster{" +"name='" + name + '\'' +", job='" + job + '\'' +", sal=" + sal +'}';}
}

package Object;public class Finalize_ {public static void main(String[] args) {Car01 bmw = new Car01("宝马");bmw = null;  //这时car01对象就是一个垃圾,垃圾回收就会被回收(销毁)//在销毁对象前,会调用该对象的finalize方法//程序员就可以在finalize中写自己的业务逻辑代码(比如释放资源:数据库连接,或者打开文件。。)//如果程序员不再重写finalize,那么就会调用 Object类的 finalize 即默认处理//如果程序员重写了finalize,就可以实现自己的逻辑System.gc();System.out.println("程序退出了。。。");}
}
class Car01{private String name;public Car01(String name) {this.name = name;}@Overrideprotected void finalize() throws Throwable {System.out.println("我们销毁了 汽车 + " + name);System.out.println("我们释放了资源");}
}
http://www.dtcms.com/a/525764.html

相关文章:

  • Spring依赖管理核心技巧与应用
  • java面试:有了解过消息队列mq吗,详细讲解一下
  • 建设校园网站公司怎么介绍自己的优势
  • 第十四届蓝桥杯大赛软件赛国赛Java大学C组(部分)
  • 2025年--Lc211- 557. 反转字符串中的单词 III--Java版
  • 网站建设售后服务承诺网站做多久才有流量
  • 网站外包制作工程建设报道
  • 【u-boot】u-boot启动文件start.S剖析(ARM64)
  • 【JUnit实战3_11】第六章:关于测试的质量(下)
  • 最新选题-基于Spark的二氧化碳排放量数据分析系统设计
  • 438.找到字符串中所有字母异位词
  • 鞍山手机网站设计广东省室内设计公司排名
  • 适合seo优化的网站制作网站鼠标特效
  • 【无标题】叽叽喳喳
  • 多线程六脉神剑第四剑:读写锁 (ReaderWriterLockSlim)
  • 网站设关键字wordpress搭建问答系统
  • 泉州高端网站建设微信h5免费制作网站模板下载
  • 第13章-人员管理
  • Maya Python入门:属性连接connectAttr()、创建节点createNode()
  • Java学习之旅第三季-17:Lambda表达式
  • 企业电子商务网站建设和一般建设网站收费标准
  • 【深度学习】深度学习核心:优化与正则化超详细笔记
  • 南昌做网站哪个好如何做好网站推广工作
  • 网站网速慢网站正在建设中_敬请期待
  • 影刀:自动化测试网页应用
  • 做彩票网站要什么接口只放一个图片做网站
  • git重写历史
  • 免费下载app软件网站寻找网站建设公司
  • 动易手机网站外贸商城源码
  • 简述网站建设流程中的各个步骤wordpress破解主题商务