Java基础——封装、继承、多态

本文深入浅出地介绍了Java语言的三大核心特性:封装、继承和多态。通过具体实例展示了这些概念的应用及其带来的优势,包括代码复用性和扩展性的增强。

Java基础——封装、继承、多态

——小实例快速成长

抽象:

1.目的:将复杂的东西简单化,将繁乱的内容有序化。

2.过程:对相同、相似的东西合而为一,对不同的内容进行归门别类。

3.结果:类、接口。

 

封装:

1.目的:化零为整,将零散的内容进行归属,进行权限控制。

2.过程:将某对象的属性、方法(功能)统一到其名下,并分别设置。适当的权限进行控制管理。

3.结果:对象,接口。

 

继承:

1.求大同存小异;在一个系列内,大部分都有的内容,就划归父类;子类将父类的内容继承过来,可以有自身的一些发展和个性。

2.增强复用性、可扩展性。

 

多态:

随机应变,应需而动。

1.运行时多态——程序运行起来后,接口根据当时实情进行智能分配和对接。

2.编译时多态——预先写好,子类在父类基础上的对相同功能的性能改变。

 

函数(function):

1.结构:分五个组成部分——权限修饰符、函数名、参数、函数体、返回值类型。(不同情况下,有些内容需要省去)

2.重写:相同函数名及参数的函数体的不同实现。

3.重载:对某一功能的结构级的彻底变革。参数必变、返回值类型或函数体实现可以有变(其中“参数”的个数或参数类型至少有一个发生改变)。

 

示例代码:

public class TestBase {
	public static void main(String[] args) {
		//Cat cat1 = new Cat();  //提示“实际参数列表和形式参数列表长度不同”的错误
		Cat cat2 = new Cat("波斯");
		Wolf wolf1 = new Wolf();
		wolf1.run("蒙古狼");
		Wolf wolf2 = new Wolf("蒙古狼");
		wolf2.run("蒙古狼");
		Tiger tiger = new Tiger();
		tiger.eat("肉");
		
		Animal animal = new Wolf("西北狼");
		animal.run();
	}
}

//抽象类
abstract class Animal {
	String Food;
	protected String Name;
	
	//无参构造函数
	public Animal(){
		System.out.println("\n——父类 无参构造方法!\n");
	};
	
	//有参构造函数
	public Animal(String name){
		this.Name = name;
		System.out.println(Name + "的 父类 有参构造方法!\n");
	}
	
	//抽象方法
	abstract void eat(String food);
	
	//一般方法
	public void run(){
		System.out.println("父类一般方法run()" + "I like run!\n");
	}
}

//继承 父类Animal
class Cat extends Animal {
	//有参构造函数
	public Cat(String name){
		//初始化父类构造方法
		super(name);
		System.out.println("子类Cat有参构造函数!\n");
	}
	
	public void eat(String food) {
		//成员变量Food继承自父类——protected成员变量
		this.Food = food;
		System.out.println("猫以"+food+"为食!\n");
	}
}

//继承 父类Animal
class Wolf extends Animal {
	//无参构造方法
	public Wolf(){
		//非显示调用父类构造方法,当程序使用本无参构造方法是,系统将自动调用父类无参构造方法
		
		//检验————无参构造函数调用的时机
		System.out.println("调用了Wolf类的无参构造方法!\n");
	};
	
	public Wolf(String name){
		//非显示调用父类构造方法,当程序使用本有参构造方法是,系统将自动调用父类无参构造方法
		
		//成员变量Name继承自父类——public成员变量
		this.Name = name;
		System.out.println("子类Wolf有参构造函数!\n");
	}
	public void eat(String food) {
		//成员变量Food继承自父类——protected成员变量
		this.Food = food;
		System.out.println("狼以"+food+"为食!\n");
	}
	
	//重写 父类的 一般方法
	public void run(){
		System.out.println("子类wolf重写父类的run()方法" + 
					"I don't like run, but I must be to do.\n");
	}
	
	//重载 父类的 一般方法
	public void run(String name){
		System.out.println(name + "子类wolf重载父类的run()方法——" + 
					"name" + "说:\"" + "I don't like run, but I must do.\"\n");
	}
}

//继承 父类Animal
class Tiger extends Animal {
	public void eat(String food) {
		this.Name = "东北虎";
		System.out.println("我的名字叫:" + Name + "; 我以" + food + "为食!\n");
	} 
}

运行效果图:

### Java 面向对象编程的核心概念 #### 封装 封装是一种保护机制,用于隐藏对象的内部状态并仅暴露必要的部分给外部访问。通过设置类成员变量为私有(`private`),并通过公共方法(如 getter 和 setter 方法)来控制这些成员变量的读写操作。 以下是封装的一个简单示例: ```java public class Person { private String name; private int id; // Getter and Setter methods public String getName() { return name; } public void setName(String name) { this.name = name; } public int getId() { return id; } public void setId(int id) { this.id = id; } } ``` 上述代码展示了如何利用 `private` 关键字限制直接访问字段,并提供公有的方法以便安全地修改数据[^3]。 --- #### 继承 继承是面向对象编程的重要特性之一,它允许一个类获取另一个类的方法和属性。子类可以从父类那里继承所有的非私有成员变量和方法,从而减少重复代码量并提高可维护性。 下面是一个关于继承的例子: ```java class Animal { public void eat() { System.out.println("动物吃饭"); } } class Dog extends Animal { @Override public void eat() { System.out.println("狗吃骨头"); } } ``` 在这个例子中,`Dog` 类继承自 `Animal` 类,并重写了其 `eat()` 方法以表现出不同的行为[^2]。 --- #### 多态 多态是指同一种类型能够呈现出多种形式的能力,在运行时决定调用哪个版本的具体实现。这通常涉及父类引用指向子类实例的情况。当程序执行到某个方法时,会依据实际的对象类型动态绑定相应的方法体。 考虑如下代码片段: ```java public class TestPolymorphism { public static void main(String[] args) { Animal animal1 = new Cat(); animal1.eat(); // 输出 "猫吃鱼" Animal animal2 = new Dog(); animal2.eat(); // 输出 "狗吃骨头" } } class Animal { public void eat() { System.out.println("动物吃饭"); } } class Cat extends Animal { @Override public void eat() { System.out.println("猫吃鱼"); } } class Dog extends Animal { @Override public void eat() { System.out.println("狗吃骨头"); } } ``` 这里体现了多态性的特点——尽管声明的是 `Animal` 类型的变量,但由于它们实际上分别保存着 `Cat` 或者 `Dog` 的实例,因此最终打印出来的结果取决于各自覆盖后的逻辑[^4]。 --- ### 总结 以上介绍了 Java 中面向对象三大核心支柱:**封装**提供了安全性;**继承**促进了代码复用性和扩展能力;而 **多态** 则增强了灵活性与适应变化的需求。三者共同构成了强大的 OOP 编程范式基础
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值