您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# 简单类的写法及继承、接口等用法实例
## 目录
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;
}
}
}
public class Main {
public static void main(String[] args) {
// 创建对象
Student stu1 = new Student("张三", 18);
// 调用方法
stu1.study(); // 输出:张三正在学习...
// 访问属性(通过方法)
System.out.println(stu1.getName());
}
}
// 父类
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);
}
}
public class Test {
public static void main(String[] args) {
Person p1 = new Person("普通人");
Person p2 = new Teacher("王老师", "数学");
p1.introduce(); // 输出:我是普通人
p2.introduce(); // 输出:我是王老师,教授数学
}
}
super
关键字访问父类成员// 可飞行的接口
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);
}
}
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("飞机正在滑行降落");
}
}
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("-------------------");
}
}
}
掌握这些面向对象的核心概念,能够帮助开发者设计出更加优雅、可维护的代码结构。在实际开发中,应根据具体需求选择最合适的抽象层次,避免过度设计。
最佳实践建议: - 优先使用组合而非继承 - 面向接口编程 - 遵循单一职责原则 - 保持类的内聚性 “`
这篇文章共计约3900字,采用Markdown格式编写,包含了: 1. 完整的目录结构 2. 理论解释与代码示例结合 3. 表格对比抽象类与接口 4. 综合应用案例 5. 总结与最佳实践建议
所有代码示例都采用Java语言实现,可以直接复制运行测试。如需调整内容或补充其他语言的示例,可以进一步修改完善。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。