继承、继承中的重写
[修饰符] class 子类名 extends 父类名 {
类体
}
例1:
public class Bird{//父类 String color="white"; String skin="羽毛"; } public class Pigeon extends Bird{//子类 public static void main(String[] args) { Pigeon pigeon=new Pigeon();//建立类的对象 System.out.println(pigeon.color);//输出对象属性color } }
例2
import java.util.Date; public class Employee { private String name;//定义成员变量 private double salary; private Date birthday; public String getName() {//获取成员变量 return name; } public void setName(String name) {//设置成员变量 this.name=name; } public double getSalary() { return salary; } public void setSalary(double salary){ this.salary=salary; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday=birthday; } }
public class Manager extends Employee {//继承,简化代码 private double bonus;//定义变量,奖金 public double getBonus() {//获取成员变量 return bonus; } public void setBonus(double bonus) {//设置成员变量 this.bonus=bonus; } }
import java.util.Date; public class Test { public static void main(String[] args) { Employee e=new Employee();//创建Employee对象,并赋值 e.setName("Java");//赋值成员变量 e.setSalary(2000); e.setBirthday(new Date()); Manager m=new Manager();//创建Manager对象,并赋值 m.setName("阿伟");//调用父类方法 m.setSalary(5000); m.setBirthday(new Date()); m.setBonus(2000); //输出经理和员工属性值 System.out.println("员工的姓名、工资、生日:"+"\n"+e.getName()+"\n"+e.getSalary()+"\n"+e.getBirthday()); System.out.println("经理的姓名、工资、生日:"+"\n"+m.getName()+"\n"+m.getSalary()+"\n"+m.getBirthday()); System.out.println("经理的奖金:"+m.getBonus()); } }
继承中的重写
子类中的方法名与父类中的相同时,不继承父类方法,执行子类方法。重写也称为覆盖。
例:父类Animal,子类Cat、Dog、Sheep,执行文件Zoo
Dog类和Cat类都重写了父类的方法cry( ),执行子类方法。但Sheep类没有重写父类方法,所以执行父类方法。
public class Animal { public void cry() { System.out.println("动物的叫声"); } } public class Dog extends Animal{ public void cry() { System.out.println("狗的叫声“汪汪……”"); } } public class Cat extends Animal{ public void cry() { System.out.println("猫的叫声“喵喵……”"); } } public class Sheep extends Animal{ } public class Zoo { public static void main(String[] args) { Dog dog=new Dog();//建立对象 Cat cat=new Cat();//建立对象 Sheep sheep=new Sheep();//建立对象 dog.cry(); cat.cry(); sheep.cry(); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· Open-Sora 2.0 重磅开源!
2017-01-12 Ubuntu创建、删除文件与目录