Java教程

JAVA面向对象的继承和多态

本文主要是介绍JAVA面向对象的继承和多态,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

今天来学习JAVA的面向对象的继承与多态

何为继承?

和我们生活中的继承是一个意思,子女可以继承父母的车、房、财产,姓氏等······

在java中,继承使用的关键字是extends。
子类可以继承父类的属性、方法。
在Java中,继承只能单继承,所以一个子类只能继承一个父类。但是一个父类允许有多个子类。
为何要使用继承?

实现了代码的重用,相同的代码不需要重复的编写。
子类继承父类,可以直接享受父类中已经封装好的属性以及方法,不需要再次开发。
子类可以根据自己的属性,封装自己特有的属性和方法。

如何使用?(格式)

public class Fu{
//属性
//方法
}

//extends 表示继承
public class Zi extends Fu{
//属性
//方法
}

通过案例具体学习

1.创建父类,拥有属性姓名和年龄。拥有show()方法显示自己的信息。
2.创建子类,继承父类的属性和方法,拥有新的属性爱好。
3.创建测试类,进行测试。
继承例题
声明一个Person类,私有化属性name和age,并将字段封装起来;
在Person类中定义一个talk()方法,打印姓名和年龄信息;
在main方法中声明并实例化一Person对象p,给p中的属性赋值,调用talk()方法打印 我是:张三,今年:18岁。
测试说明
测试输入:
我是:张三,今年:18岁

/********* begin /
// 声明并实例化一Person对象p
Person p =new Person();
// 给p中的属性赋值
p.setName(“张三”);
p.setAge(18);
// 调用Person类中的talk()方法
p.talk();
/
end *********/

}

}

// 在这里定义Person类
class Person {
/********* begin *********/
private String name;
private int age;
public void talk(){
System.out.println(“我是:”+name+",今年:"+age+“岁”);

 }

  public String getName() {
        return name;
 }

 public void setName(String name){
           this.name=name;
 }
   
   public int getAge() {
         return age;
        }

 public void setAge(int age){
	   this.age=age;
 }
/********* end ******

多态中的成员访问特点
成员访问特点

成员变量

​ 编译看父类,运行看父类

成员方法

​ 编译看父类,运行看子类

代码演示

class Fu {
int num = 10;

public void method(){
    System.out.println("Fu.. method");
}

}

class Zi extends Fu {
int num = 20;

public void method(){
    System.out.println("Zi.. method");
}

}

public class Test2Polymorpic {
/*
多态的成员访问特点:

            成员变量: 编译看左边 (父类), 运行看左边 (父类)

            成员方法: 编译看左边 (父类), 运行看右边 (子类)
 */
public static void main(String[] args) {
    Fu f = new Zi();
    System.out.println(f.num);
    f.method();
}

}

多态例题
(多态)定义榨汁机JuiceMachine 有榨汁方法makeJuice,传入相应的水果。
如果传入的是Apple 输出 “流出苹果汁”
传入的是Orange 输出 “流出橙汁”
传入的是Banana 输出 “流出香蕉酱”

abstract class Fruit{
abstract void makeJuice();
}
class JuiceMachine{
public static void makeJuice(Fruit f){
f.makeJuice();
}
}

class Apple extends Fruit {

@Override
public void makeJuice() {
	// TODO Auto-generated method stub
	System.out.println("流出苹果汁");
}

}
class Orangle extends Fruit{

@Override
public void makeJuice() {
	// TODO Auto-generated method stub
	System.out.println("流出橙汁");
}

}
class Banana extends Fruit{

@Override
public void makeJuice() {
	// TODO Auto-generated method stub
	System.out.println("流出香蕉酱");
}

}

public class Test1 {

public static void main(String[] args) {
	JuiceMachine.makeJuice(new Apple());
	JuiceMachine.makeJuice(new Orangle());
	JuiceMachine.makeJuice(new Banana());
	
	
}

}

这篇关于JAVA面向对象的继承和多态的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!