类和对象二

简介: 类和对象二

Java类和对象实例(五):多态

多态是面向对象编程的四大特性之一,它允许我们使用父类类型的引用指向子类对象,并可以在运行时确定调用哪个子类的方法。这通常通过方法重写(Override)和方法重载(Overload)来实现。

方法重写(Override)

当子类有一个与父类完全相同的方法(方法名、参数列表和返回类型都相同)时,我们说子类重写了父类的方法。在运行时,如果通过父类引用调用这个方法,将执行子类中的实现。

java复制代码

 

// 父类

 

public class Animal {

 

void makeSound() {

 

System.out.println("The animal makes a sound.");

 

}

 

}

 

 

 

// 子类

 

public class Dog extends Animal {

 

// 重写父类方法

 

@Override 

 

void makeSound() {

 

System.out.println("The dog barks.");

 

}

 

}

 

 

 

// 另一个子类

 

public class Cat extends Animal {

 

// 重写父类方法

 

@Override 

 

void makeSound() {

 

System.out.println("The cat meows.");

 

}

 

}

使用多态

java复制代码

 

public class Main {

 

public static void main(String[] args) {

 

Animal animal1 = new Dog(); // Dog对象赋值给Animal引用

 

Animal animal2 = new Cat(); // Cat对象赋值给Animal引用

 

 

 

// 调用makeSound方法,实际执行的是子类中的实现

 

animal1.makeSound(); // 输出 "The dog barks."

 

animal2.makeSound(); // 输出 "The cat meows."

 

}

 

}

方法重载(Overload)

方法重载是指在同一个类中可以有多个方法拥有相同的名字,但参数列表(参数数量、类型或顺序)必须不同。

java复制代码

 

public class Calculator {

 

// 重载的加法方法,接受两个整数参数

 

int add(int a, int b) {

 

return a + b;

 

}

 

 

 

// 重载的加法方法,接受两个浮点数参数

 

double add(double a, double b) {

 

return a + b;

 

}

 

}

使用重载

java复制代码

 

public class Main {

 

public static void main(String[] args) {

 

Calculator calculator = new Calculator();

 

 

 

// 调用不同的add方法,根据参数类型决定

 

int sumInts = calculator.add(5, 10); // 使用整数参数的add方法

 

double sumDoubles = calculator.add(5.5, 10.5); // 使用浮点数参数的add方法

 

 

 

System.out.println("Sum of integers: " + sumInts);

 

System.out.println("Sum of doubles: " + sumDoubles);

 

}

 

}

Java类和对象实例(六):封装、抽象和接口

封装(Encapsulation)

封装是指将对象的属性(变量)和方法(函数)隐藏在一个类内部,并通过公共的getter和setter方法来访问和修改这些属性。这有助于保护对象的内部状态,防止外部代码直接访问和修改对象的属性。

抽象(Abstraction)

抽象是指只显示对象的必要信息,而隐藏不必要的细节。在Java中,可以使用抽象类(abstract class)和抽象方法(abstract method)来实现抽象。抽象类不能被实例化,通常包含一个或多个抽象方法,这些方法在抽象类中没有具体实现,必须由子类提供具体实现。

接口(Interface)

接口是一种定义方法但不包含实现的抽象类型。它允许我们定义一组方法,然后由不同的类来实现这些方法。接口可以被类实现(implements),一个类可以实现多个接口。接口是Java中实现多态的一种方式。

定义抽象类和接口

java复制代码

 

// 抽象类

 

public abstract class Animal {

 

abstract void makeSound(); // 抽象方法

 

}

 

 

 

// 接口

 

public interface Speakable {

 

void speak(); // 接口方法

 

}

 

 

 

// 实现抽象类和接口的类

 

public class Dog extends Animal implements Speakable {

 

@Override 

 

void makeSound() {

 

System.out.println("The dog barks.");

 

}

 

 

 

@Override 

 

public void speak() {

 

System.out.println("The dog says, 'Woof!'");

 

}

 

}

使用抽象类和接口

java复制代码

 

public class Main {

 

public static void main(String[] args) {

 

Animal animal = new Dog(); // Dog对象赋值给Animal引用

 

Speakable speakable = new

 

目录
相关文章
|
3月前
|
存储 编译器 程序员
C++:类和对象(中)
C++:类和对象(中)
52 1
|
10月前
类和对象(下)
类和对象(下)
|
6天前
|
存储 安全 编译器
【C++】类和对象(下)
【C++】类和对象(下)
【C++】类和对象(下)
|
6天前
|
编译器 C++
【C++】类和对象(中)
【C++】类和对象(中)
|
11天前
|
编译器 C++ 开发者
C++ --> 类和对象(二)
C++ --> 类和对象(二)
25 7
|
2月前
|
编译器 C语言 C++
【C++】:类和对象(下)
【C++】:类和对象(下)
19 0
|
3月前
|
存储 Java 编译器
类和对象详解
类和对象详解
|
3月前
|
Java 数据安全/隐私保护
类和对象一
类和对象一
19 1
|
3月前
|
存储 编译器 程序员
C++类和对象(中)
C++类和对象
75 0
|
9月前
|
存储 编译器 C语言
C++类和对象(上)
C++类和对象(上)