一个例子理解java面向对象的机制

简介:

//定义Gun类
public abstract class Gun {
protected String name;
// 带参数的构造方法,特殊的方法,名字必须与类名相同
public Gun() {
public Gun(String name) {
this.name = name;
// 构造抽象方法,并在子类中继承和定义。
abstract void sound();
public String getName() {
return name;
public void setName(String name) {
this.name = name;
//Carbine继承自Gun
public class Carbine extends Gun {
//带参数的构造方法,特殊的方法,名字必须与类名相同
public Carbine(String name) {
this.name = name;
//Gun类下不同的子类拥有同名的sound()方法,但是内容不同,在调用sound()方法时会根据具体的Gun而自动调用相应的方法。
//这用到了 Java的多态性。
void sound() http://www.huiyi8.com/jiaoben/
// TODO Auto-generated method stub
System.out.println("DaDaDa!"); javascript特效
//Rifle继承自Gun
public class Rifle extends Gun {
//带参数的构造方法,是特殊的方法,名字必须与类名相同
public Rifle(String name) {
this.name = name;
//Gun类下不同的子类拥有同名的sound()方法,但是内容不同,在调用sound()方法时会根据具体的Gun而自动调用相应的方法。
//这用到了Java的多态性。
void sound() {
// TODO Auto-generated method stub
System.out.println("Peng! Peng! Peng!");
//定义Person类
public class Person {
private String name;
public String getName() {
return name;
public void setName(String name) {
this.name = name;
// 体现多态性。
public void shoot(Person p, Gun g) {
System.out.println(this.name + " shoot\t" + p.getName() + " using a "
+ g.getName());
g.sound();
//在main()函数中 测试
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Person p1 = new Person();
Person p2 = new Person();
p1.setName("XiaoWang");
p2.setName("XiaoLi");
Rifle r = new Rifle("rifle");
Carbine c = new Carbine("carbine");
// 将方法的调用和实现分离,已达到封装的效果。
p1.shoot(p2, r);
p1.shoot(p2, c);



最新内容请见作者的GitHub页:http://qaseven.github.io/


相关文章
|
20天前
|
搜索推荐 Java
Java的面向对象特性主要包括封装、继承和多态
【4月更文挑战第5天】Java的面向对象特性主要包括封装、继承和多态
15 3
|
1月前
|
Java 关系型数据库
JAVA面向对象设计原则
JAVA面向对象设计原则
12 1
|
1月前
|
Java
java面向对象高级分层实例_实体类
java面向对象高级分层实例_实体类
10 1
|
1月前
|
开发框架 Java API
java反射机制的原理与简单使用
java反射机制的原理与简单使用
17 1
|
19小时前
|
Java 数据库连接
深入理解Java异常处理机制
【4月更文挑战第24天】本文将探讨Java中的异常处理机制,包括异常的概念、分类、捕获和抛出等方面。通过深入了解异常处理机制,可以帮助我们编写更加健壮的程序,提高代码的可读性和可维护性。
|
21小时前
|
安全 Java
Java基础&面向对象&继承&抽象类
Java基础&面向对象&继承&抽象类
|
23小时前
|
Java
【Java基础】详解面向对象特性(诸如继承、重载、重写等等)
【Java基础】详解面向对象特性(诸如继承、重载、重写等等)
5 0
|
6天前
|
安全 Java 机器人
《Java 简易速速上手小册》第2章:面向对象的 Java(2024 最新版)
《Java 简易速速上手小册》第2章:面向对象的 Java(2024 最新版)
19 0
|
9天前
|
存储 Java
Java基础教程(7)-Java中的面向对象和类
【4月更文挑战第7天】Java是面向对象编程(OOP)语言,强调将事务抽象成对象。面向对象与面向过程的区别在于,前者通过对象间的交互解决问题,后者按步骤顺序执行。类是对象的模板,对象是类的实例。创建类使用`class`关键字,对象通过`new`运算符动态分配内存。方法包括构造函数和一般方法,构造函数用于对象初始化,一般方法处理逻辑。方法可以有0个或多个参数,可变参数用`类型...`定义。`this`关键字用于访问当前对象的属性。
|
12天前
|
存储 Java 编译器
对象的交响曲:深入理解Java面向对象的绝妙之处
对象的交响曲:深入理解Java面向对象的绝妙之处
46 0
对象的交响曲:深入理解Java面向对象的绝妙之处