一个例子理解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/


相关文章
|
9天前
|
Java 数据库连接 开发者
Java的Shutdown Hook机制:优雅地关闭应用程序
Java的Shutdown Hook机制:优雅地关闭应用程序
17 1
|
11天前
|
Java 程序员 开发者
深入理解Java并发编程:线程同步与锁机制
【4月更文挑战第30天】 在多线程的世界中,确保数据的一致性和线程间的有效通信是至关重要的。本文将深入探讨Java并发编程中的核心概念——线程同步与锁机制。我们将从基本的synchronized关键字开始,逐步过渡到更复杂的ReentrantLock类,并探讨它们如何帮助我们在多线程环境中保持数据完整性和避免常见的并发问题。文章还将通过示例代码,展示这些同步工具在实际开发中的应用,帮助读者构建对Java并发编程深层次的理解。
|
5天前
|
存储 安全 Java
Java面向对象最新超详细总结版!
Java面向对象最新超详细总结版!
24 7
Java面向对象最新超详细总结版!
|
13天前
|
Java
【专栏】Java反射机制,该机制允许程序在运行时获取类信息、动态创建对象、调用方法和访问属性
【4月更文挑战第27天】本文探讨了Java反射机制,该机制允许程序在运行时获取类信息、动态创建对象、调用方法和访问属性。反射通过Class、Constructor、Method和Field类实现。文中列举了反射的应用场景,如动态创建对象、调用方法、访问属性和处理注解,并提供了相关实例代码演示。
|
1天前
|
Java 数据安全/隐私保护
java中异常处理机制
java中异常处理机制
8 1
|
1天前
|
Java
java面向对象——包+继承+多态(一)-2
java面向对象——包+继承+多态(一)
15 3
|
1天前
|
SQL Java 编译器
java面向对象——包+继承+多态(一)-1
java面向对象——包+继承+多态(一)
15 2
|
2天前
|
算法 安全 Java
深入探索Java中的并发编程:CAS机制的原理与应用
总之,CAS机制是一种用于并发编程的原子操作,它通过比较内存中的值和预期值来实现多线程下的数据同步和互斥,从而提供了高效的并发控制。它在Java中被广泛应用于实现线程安全的数据结构和算法。
16 0
|
2天前
|
Java API 开发者
解密Java反射机制与动态代理
解密Java反射机制与动态代理
8 0
|
4天前
|
Java 数据库连接 开发者
Java中的异常处理机制详解
Java异常处理是确保程序健壮的关键,涉及Throwable的Error和Exception子类。Error由JVM抛出,不建议捕获;Exception分为检查异常(需要捕获)和未检查异常。处理异常的关键字有try、catch、finally、throw和throws。最佳实践包括捕获具体异常、不吞没异常、释放资源和避免滥用异常。示例展示了如何在main方法中处理IOException,并在finally块中进行资源清理。