Java 面向对象和封装全面梳理总结
什么是面向对象编程?
面向对象编程(Object-Oriented Programming,简称OOP)是一种程序设计范式,它将“对象”作为程序的基本单元,通过对象之间的交互来实现程序的功能。在OOP中,每个对象都具有数据(属性)和行为(方法),对象通过调用方法来执行某些操作,并可以修改自身的状态。
OOP的核心思想是把现实世界中的事物抽象成程序中的对象,这样就可以更加自然地设计程序,减少程序出错的可能性,加快程序的开发速度。
Java 中的面向对象编程
Java是一门强类型、面向对象的编程语言,它严格遵循OOP的思想,可以说Java的全部特性都与面向对象编程有着密切的联系。
Java中的每个对象都必须是一个类的实例,类是对象共享状态和行为的集合,Java中的类包含数据(成员变量)和方法(成员方法)。可以通过创建类的实例来访问它的数据和方法。
Java中还有一个重要的概念是继承(Inheritance),它允许类继承其他类的属性和方法,从而可以节省代码并实现代码复用。
除了继承,Java中还有另一个重要的概念是多态(Polymorphism),它允许不同对象对同一消息作出不同的响应。多态是通过方法重载(Overloading)和方法重写(Overriding)实现的。
什么是封装?
封装是面向对象编程的一种基本特性,它指的是将数据和方法包装在一个单元中,并对外部隐藏实现细节,只公开一些必要的接口,从而提高代码的可维护性和重用性。
在Java中,封装是通过访问权限修饰符实现的。Java中有4种访问权限修饰符,它们分别是:
- public:公共的,可以被任何类访问。
- protected:受保护的,可以被子类和同一包中的类访问。
- default(没有修饰符):默认的,可以被同一包中的类访问。
- private:私有的,只能被本类中的方法访问。
我们可以根据数据和方法的访问权限将其划分为不同的层次,以保证代码的安全性和简洁性。
示例说明
示例一:封装的实现
public class Person {
private String name;
private int age;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
}
public class Test {
public static void main(String[] args) {
Person p = new Person();
p.setName("Tom");
p.setAge(18);
System.out.println(p.getName() + " " + p.getAge());
}
}
在这个例子中,我们定义了一个Person
类,它有两个私有的成员变量name
和age
,以及四个公有的成员方法setName
、getName
、setAge
、getAge
。我们可以通过公有的成员方法来访问和修改成员变量,从而实现了数据的封装。
在Test
类中,我们创建了一个Person
对象p
,并使用setName
、setAge
方法来设置成员变量的值,然后使用getName
、getAge
方法来获取成员变量的值,最终输出结果为Tom 18
。
示例二:继承的实现
public class Animal {
private String name;
public Animal(String name) {
this.name = name;
}
public void shout() {
System.out.println("Animal is shouting!");
}
}
public class Dog extends Animal {
public Dog(String name) {
super(name);
}
public void shout() {
System.out.println("Dog is shouting!");
}
}
public class Test {
public static void main(String[] args) {
Animal a = new Animal("Animal");
a.shout();
Dog d = new Dog("Dog");
d.shout();
}
}
在这个例子中,我们定义了一个Animal
类,它有一个私有的成员变量name
和一个公有的成员方法shout
,shout
方法输出了Animal is shouting!
。接着我们定义了一个Dog
类,它继承自Animal
类,并重写了shout
方法,shout
方法输出了Dog is shouting!
。
在Test
类中,我们分别创建了一个Animal
对象a
和一个Dog
对象d
,并调用它们的shout
方法。由于Dog
继承自Animal
,所以它可以调用Animal
类中的方法,但由于它重写了shout
方法,所以它会输出Dog is shouting!
。最终输出结果为:
Animal is shouting!
Dog is shouting!
这就是多态的实现方式。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java 面向对象和封装全面梳理总结 - Python技术站