Java 的四大面向对象编程概念,程序员必须要了解的知识点
支柱 2:封装
封装是将代码和数据封装到一个单元中的过程。
真实的例子:
由几种药物混合而成的胶囊。这些药物是给最终用户的隐藏数据。
为了在 java 中实现封装,请按照以下建议执行某些步骤:
将变量声明为私有变量
声明 SETETER 和 gettersto 设置并获取变量值
注意:在 java 中封装很少有缺点,如下所示:
1.对数据的控制:我们可以在 setter 方法中写入逻辑,以避免存储整数的负值。这样我们就可以控制数据。
2.数据隐藏:数据成员是私有的,因此其他类无法访问数据成员。
3.易于测试:单元测试对于封装类很容易。
例子:
// A Java class which is a fully encapsulated class.
public class Car
{
// private variable
private String name;
// getter method for name
public String getName()
{
return name;
}
// setter method for name
public void setName(String name)
{
this .name = name
}
}
// Java class to test the encapsulated class.
public class Test
{
public static void main(String[] args)
{
// creating instance of the encapsulated class
Car car
= new Car();
// setting value in the name member
car.setName( "Honda" );
// getting value of the name member
System.out.println(car.getName());
}
}
支柱 3:继承
继承是一个类在 Java 中从另一个类继承属性和方法的过程。当我们有是-a 对象之间的关系。Java 中的继承是通过以下方式实现的延展关键词。
现实生活的例子:
地球和火星继承了超级太阳系,太阳系继承了银河系。因此,银河系是一流的太阳系,地球和火星的超级等级。
在提出代码之前,让我们用一个通用示例来讨论继承在 java 应用程序中的使用。因此,考虑一个扩展 Exception 类的示例,以创建一个特定于应用程序的异常类,该类包含更多信息,如错误代码。例如,NullPointerException。
Java 中有 5 种不同类型的继承,如下所示:
1.**单一继承:**类 B 使用扩展关键字继承 B 类
2.**多级继承:**C 类继承 B 类,B 类使用 EXTEND 关键字继承 A 类
3.**等级继承:**类 B 和 C 使用 EXTEND 关键字按层次顺序继承 A 类
4.**多重继承:**C 类继承了 A 和 B 类,这里 A 和 B 都是超类,C 只是一个子类。Java 不支持多重继承,但我们可以使用接口实现。
5.**混合继承:**类 D 继承类 B,C 类继承 A。这里,类 D 继承了两个超类,因此 Java 也不支持混合继承。
例子:
// super class
class Car {
// the Car class have one field
public String wheelStatus;
public int noOfWheels;
// the Car class has one constructor
public Car(String wheelStatus, int noOfWheels)
{
this .wheelStatus = wheelStatus;
this .noOfWheels = noOfWheels;
}
// the Car class has three methods
public void applyBrake()
{
wheelStatus = "Stop" System.out.println(
"Stop the car using break" );
}
// toString() method to print info of Car
public String toString()
{
return ( "No of wheels in car " + noOfWheels + "\n"
"status of the wheels " + wheelStatus);
}
}
// sub class
class Honda extends Car {
// the Honda subclass adds one more field
public Boolean alloyWheel;
// the Honda subclass has one constructor
public Honda(String wheelStatus, int noOfWheels,
Boolean alloyWheel)
{
// invoking super-class(Car) constructor
super (wheelStatus, noOfWheels);
alloyWheel = alloyWheel;
}
// the Honda subclass adds one more method
public void setAlloyWheel(Boolean alloyWheel)
{
alloyWheel = alloyWheel;
}
// overriding toString() method of Car to print more
// info
@Override public String toString()
{
return ( super .toString() + "\nCar alloy wheel "
alloyWheel);
}
}
// driver class
public class Main {
public static void main(String args[])
{
Honda honda = new Honda( 3 , 100 , 25 );
System.out.println(honda.toString());
}
}
支柱 4:java 的多态性
多态是以多种方式执行许多事情的能力。“多态”一词来自两个不同的希腊语单词–多态和变形。“Poly”的意思是很多,“变形”的意思是形式。所以多态意味着很多形式。在继承的情况下也可以存在多态性。根据实际实现,这些函数的行为不同。
现实生活的例子:
送货人将物品交付给用户。如果是邮递员,他会送信的。如果是送餐的男孩,他会把食物交给用户。像这样,多态性为传递函数实现了不同的方式。
有两种类型的多态性,如下所示:
1.静态或编译时多态性
2.动态或运行时多态性
静态或编译时多态性当编译器能够确定实际函数时,它被称为编译时多态编译时多态可以通过方法超载在爪哇。当类中的不同函数具有相同的名称但有不同的签名时,就称为方法重载。方法签名包含名称和方法参数。因此,重载方法有不同的参数。参数在
数字或参数类型上可能有所不同。
例 1:静态多态性
public class Car{
public void speed() {
}
public void speed(String accelerator) {
}
public int speed(String accelerator, int speedUp) {
return carSpeed;
}
}
当编译器无法确定它是超类方法还是子类方法时,就会发生动态或运行时多态性。运行时间多态运行时多态是通过方法覆盖。当超类方法在子类中被重写时,它被称为方法重写。
例 2:动态多态性
import java.util.Random;
class DeliveryBoy {
public void deliver() {
System.out.println( "Delivering Item" );
}
public static void main(String[] args) {
评论