用简单的java代码演示继承,封装,多态
时间: 2023-08-13 10:56:08 浏览: 50
当然可以!下面是一个简单的Java代码示例,演示了继承、封装和多态的概念:
```java
// 父类:动物类
class Animal {
private String name;
public Animal(String name) {
this.name = name;
}
public void eat() {
System.out.println(name + "正在进食");
}
}
// 子类:狗类,继承自动物类
class Dog extends Animal {
public Dog(String name) {
super(name);
}
public void bark() {
System.out.println("汪汪汪");
}
}
// 子类:猫类,继承自动物类
class Cat extends Animal {
public Cat(String name) {
super(name);
}
public void meow() {
System.out.println("喵喵喵");
}
}
// 主函数入口
public class Main {
public static void main(String[] args) {
***
相关问题
用Java实现继承多态封装代码
下面是一个简单的Java代码示例,演示了如何使用继承、多态和封装:
```java
// 定义一个Animal类
class Animal {
private String name;
private int age;
public Animal(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public void eat() {
System.out.println(name + " is eating.");
}
}
// 定义一个Dog类,继承自Animal类
class Dog extends Animal {
public Dog(String name, int age) {
super(name, age);
}
// 重写eat方法
@Override
public void eat() {
System.out.println(getName() + " is eating bones.");
}
// 新增方法
public void bark() {
System.out.println("Woof! Woof!");
}
}
// 定义一个Cat类,继承自Animal类
class Cat extends Animal {
public Cat(String name, int age) {
super(name, age);
}
// 重写eat方法
@Override
public void eat() {
System.out.println(getName() + " is eating fish.");
}
// 新增方法
public void meow() {
System.out.println("Meow! Meow!");
}
}
// 测试类
public class Main {
public static void main(String[] args) {
Animal animal1 = new Animal("Animal", 5);
animal1.eat(); // 输出:Animal is eating.
Dog dog1 = new Dog("Dog", 3);
dog1.eat(); // 输出:Dog is eating bones.
dog1.bark(); // 输出:Woof! Woof!
Cat cat1 = new Cat("Cat", 2);
cat1.eat(); // 输出:Cat is eating fish.
cat1.meow(); // 输出:Meow! Meow!
// 使用多态
Animal animal2 = new Dog("Poodle", 1);
animal2.eat(); // 输出:Poodle is eating bones.
// animal2.bark(); // 编译错误,Animal类没有bark方法
Animal animal3 = new Cat("Siamese", 2);
animal3.eat(); // 输出:Siamese is eating fish.
// animal3.meow(); // 编译错误,Animal类没有meow方法
}
}
```
在上面的代码中,我们定义了一个Animal类,它有私有的name和age属性,以及公有的getName、getAge和eat方法。然后我们定义了一个Dog类和一个Cat类,它们都继承自Animal类,并且分别重写了eat方法,并新增了各自的方法bark和meow。
在测试类Main中,我们分别创建了一个Animal、一个Dog和一个Cat对象,并调用了它们的方法。然后我们使用多态,将一个Dog对象和一个Cat对象分别赋值给Animal类型的变量,然后调用它们的eat方法。可以看到,它们分别调用了Dog和Cat类中重写的eat方法,而不是Animal类中的eat方法。此外,由于Animal类没有bark和meow方法,我们无法在animal2和animal3对象上调用这些方法。
c#封装继承多态代码演示
封装、继承和多态是面向对象编程中的三个重要概念。下面是一个使用C#语言演示封装、继承和多态的代码示例:
封装示例:
```csharp
using System;
namespace EncapsulationApplication
{
class Employee
{
private string name;
private int age;
public string Name
{
get { return name; }
set { name = value; }
}
public int Age
{
get { return age; }
set { age = value; }
}
public void Display()
{
Console.WriteLine("Name: " + name);
Console.WriteLine("Age: " + age);
}
}
class Program
{
static void Main(string[] args)
{
Employee emp = new Employee();
emp.Name = "John";
emp.Age = 30;
emp.Display();
Console.ReadKey();
}
}
}
```
在这个示例中,Employee类封装了私有字段name和age,并通过公共属性Name和Age提供对它们的访问。Main方法中创建了一个Employee对象emp,并通过属性设置和Display方法展示了封装的效果。
继承示例:
```csharp
using System;
namespace InheritanceApplication
{
class Shape
{
protected int width;
protected int height;
public void setWidth(int w)
{
width = w;
}
public void setHeight(int h)
{
height = h;
}
}
class Rectangle : Shape
{
public int getArea()
{
return width * height;
}
}
class Program
{
static void Main(string[] args)
{
Rectangle rect = new Rectangle();
rect.setWidth(5);
rect.setHeight(7);
Console.WriteLine("Area: " + rect.getArea());
Console.ReadKey();
}
}
}
```
在这个示例中,Shape类作为基类,Rectangle类继承了Shape类。Rectangle类可以访问Shape类的protected字段和方法。Main方法中创建了一个Rectangle对象rect,并通过调用setWidth、setHeight和getArea方法展示了继承的效果。
多态示例:
```csharp
using System;
namespace PolymorphismApplication
{
class Shape
{
public virtual void Draw()
{
Console.WriteLine("Drawing a shape");
}
}
class Circle : Shape
{
public override void Draw()
{
Console.WriteLine("Drawing a circle");
}
}
class Rectangle : Shape
{
public override void Draw()
{
Console.WriteLine("Drawing a rectangle");
}
}
class Program
{
static void Main(string[] args)
{
Shape[] shapes = new Shape[3];
shapes[0] = new Shape();
shapes[1] = new Circle();
shapes[2] = new Rectangle();
foreach (Shape shape in shapes)
{
shape.Draw();
}
Console.ReadKey();
}
}
}
```
在这个示例中,Shape类定义了一个虚拟的Draw方法,Circle类和Rectangle类分别重写了这个方法。Main方法中创建了一个Shape类型的数组,并分别用Shape、Circle和Rectangle的实例填充数组。通过遍历数组并调用Draw方法,展示了多态的效果。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![xlsx](https://img-home.csdnimg.cn/images/20210720083732.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)