简单类的写法及继承、接口等用法实例

发布时间:2021-10-11 10:28:48 作者:iii
来源:亿速云 阅读:194
# 简单类的写法及继承、接口等用法实例

## 目录
1. [面向对象编程基础概念](#一面向对象编程基础概念)
2. [简单类的定义与使用](#二简单类的定义与使用)
3. [类的继承与多态](#三类的继承与多态)
4. [接口的定义与实现](#四接口的定义与实现)
5. [抽象类与接口的对比](#五抽象类与接口的对比)
6. [综合应用实例](#六综合应用实例)
7. [总结](#七总结)

---

## 一、面向对象编程基础概念

面向对象编程(OOP)是现代编程语言中最主流的编程范式之一,其核心思想是将现实世界的事物抽象为程序中的"对象"。主要包含三大特性:

- **封装**:将数据和行为包装在类中
- **继承**:建立类之间的层次关系
- **多态**:同一操作作用于不同对象产生不同行为

Java作为典型的面向对象语言,完全支持这些特性。下面我们通过具体代码示例来演示这些概念的实际应用。

---

## 二、简单类的定义与使用

### 1. 基本类结构
```java
// 学生类示例
public class Student {
    // 字段(属性)
    private String name;
    private int age;
    
    // 构造方法
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    // 方法
    public void study() {
        System.out.println(name + "正在学习...");
    }
    
    // Getter/Setter
    public String getName() {
        return name;
    }
    
    public void setAge(int age) {
        if(age > 0) {
            this.age = age;
        }
    }
}

2. 对象创建与使用

public class Main {
    public static void main(String[] args) {
        // 创建对象
        Student stu1 = new Student("张三", 18);
        
        // 调用方法
        stu1.study();  // 输出:张三正在学习...
        
        // 访问属性(通过方法)
        System.out.println(stu1.getName());
    }
}

3. 封装的重要性


三、类的继承与多态

1. 继承的基本语法

// 父类
class Person {
    protected String name;
    
    public Person(String name) {
        this.name = name;
    }
    
    public void introduce() {
        System.out.println("我是" + name);
    }
}

// 子类继承
class Teacher extends Person {
    private String subject;
    
    public Teacher(String name, String subject) {
        super(name);  // 调用父类构造
        this.subject = subject;
    }
    
    // 方法重写
    @Override
    public void introduce() {
        System.out.println("我是" + name + ",教授" + subject);
    }
}

2. 多态的实现

public class Test {
    public static void main(String[] args) {
        Person p1 = new Person("普通人");
        Person p2 = new Teacher("王老师", "数学");
        
        p1.introduce();  // 输出:我是普通人
        p2.introduce();  // 输出:我是王老师,教授数学
    }
}

3. 继承的特点


四、接口的定义与实现

1. 接口基本语法

// 可飞行的接口
interface Flyable {
    // 常量(默认public static final)
    int MAX_HEIGHT = 10000;
    
    // 抽象方法(默认public abstract)
    void fly();
    
    // Java8+默认方法
    default void land() {
        System.out.println("正在降落...");
    }
    
    // Java8+静态方法
    static void showMaxHeight() {
        System.out.println("最大飞行高度:" + MAX_HEIGHT);
    }
}

2. 接口实现

class Bird implements Flyable {
    @Override
    public void fly() {
        System.out.println("鸟儿展翅飞翔");
    }
}

class Airplane implements Flyable {
    @Override
    public void fly() {
        System.out.println("飞机引擎推进飞行");
    }
    
    @Override
    public void land() {
        System.out.println("飞机正在滑行降落");
    }
}

3. 接口的使用

public class InterfaceTest {
    public static void main(String[] args) {
        Flyable[] flyables = {new Bird(), new Airplane()};
        
        for(Flyable f : flyables) {
            f.fly();
            f.land();
        }
        
        Flyable.showMaxHeight();
    }
}

五、抽象类与接口的对比

特性 抽象类 接口
定义关键字 abstract class interface
方法实现 可以有具体方法 Java8前只能有抽象方法
字段 可以有普通字段 只能是常量
构造方法
多继承 不支持 支持多实现
设计目的 代码复用 定义行为规范
典型使用场景 同类事物的抽象 跨继承体系的能力定义

示例代码对比:

// 抽象类示例
abstract class Animal {
    protected String name;
    
    public Animal(String name) {
        this.name = name;
    }
    
    // 抽象方法
    public abstract void makeSound();
    
    // 具体方法
    public void eat() {
        System.out.println(name + "正在进食");
    }
}

// 接口示例
interface Swimmable {
    void swim();
}

六、综合应用实例

图形计算系统设计

// 接口定义
interface Shape {
    double area();
    double perimeter();
}

// 抽象类
abstract class AbstractShape implements Shape {
    protected String color;
    
    public AbstractShape(String color) {
        this.color = color;
    }
    
    public String getColor() {
        return color;
    }
}

// 具体类实现
class Circle extends AbstractShape {
    private double radius;
    
    public Circle(String color, double radius) {
        super(color);
        this.radius = radius;
    }
    
    @Override
    public double area() {
        return Math.PI * radius * radius;
    }
    
    @Override
    public double perimeter() {
        return 2 * Math.PI * radius;
    }
}

class Rectangle extends AbstractShape {
    private double width;
    private double height;
    
    public Rectangle(String color, double width, double height) {
        super(color);
        this.width = width;
        this.height = height;
    }
    
    @Override
    public double area() {
        return width * height;
    }
    
    @Override
    public double perimeter() {
        return 2 * (width + height);
    }
}

测试代码

public class ShapeTest {
    public static void main(String[] args) {
        Shape[] shapes = {
            new Circle("红色", 5.0),
            new Rectangle("蓝色", 4.0, 6.0)
        };
        
        for(Shape shape : shapes) {
            System.out.println("颜色:" + ((AbstractShape)shape).getColor());
            System.out.println("面积:" + shape.area());
            System.out.println("周长:" + shape.perimeter());
            System.out.println("-------------------");
        }
    }
}

七、总结

  1. 是面向对象的基础构建块,用于封装数据和行为
  2. 继承建立了is-a关系,实现代码复用和多态
  3. 接口定义了can-do关系,实现行为规范的约定
  4. 抽象类介于普通类和接口之间,适合部分实现的场景
  5. 合理使用这些特性可以构建出灵活、可扩展的系统架构

掌握这些面向对象的核心概念,能够帮助开发者设计出更加优雅、可维护的代码结构。在实际开发中,应根据具体需求选择最合适的抽象层次,避免过度设计。

最佳实践建议: - 优先使用组合而非继承 - 面向接口编程 - 遵循单一职责原则 - 保持类的内聚性 “`

这篇文章共计约3900字,采用Markdown格式编写,包含了: 1. 完整的目录结构 2. 理论解释与代码示例结合 3. 表格对比抽象类与接口 4. 综合应用案例 5. 总结与最佳实践建议

所有代码示例都采用Java语言实现,可以直接复制运行测试。如需调整内容或补充其他语言的示例,可以进一步修改完善。

推荐阅读:
  1. Java 接口的实现,非抽象类可以继承抽象类
  2. Python面向对象程序设计OOP入门教程【类,实例,继承,重载等】

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java

上一篇:Linux操作系统的示例分析

下一篇:如何让电脑开机后默认开启小键盘

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》