跳到主要内容

Java 面向对象

面向对象三大特性:封装、继承、多态

封装

封装是把数据和操作数据的方法封装在一起,将对象的属性和行为封装到一个对象中,是面向对象编程的一个基本特性。

示例:

public class Student{
private String name;
private String gender;
private int age;
public Student(String name,String gender,int age) {
this.name = name;
this.gender = gender;
this.age = age;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getGender() {
return this.gender;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return this.age;
}
}

说明:

  • Student 类中定义了各种属性,通过代码形式包装起来,这种思路叫“封装”。

继承

继承是指一个类可以从另一个已存在的类中继承其属性和行为,也可以在继承的基础上增加自己特有的属性或行为,使得子类具有超越父类的功能。

示例:


public class Student {
private String name;
private String gender;
private int age;
public Student(String name,String gender,int age) {
this.name = name;
this.gender = gender;
this.age = age;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getGender() {
return this.gender;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return this.age;
}
}
public class GraduateStudent extends Student {
private String major;
public GraduateStudent(String name,String gender,int age,String major) {
super(name,gender,age);
this.major = major;
}
public void setMajor(String major) {
this.major = major;
}
public String getMajor() {
return this.major;
}
}

说明:

  • GraduateStudent 类继承了 Student 类,并添加了自己的属性(major)。

多态

多态是指一个事物可以具有多种形态,即一个对象可以根据不同的情况具有不同的形态,也就是说在不同的时刻可以表现出不同的行为(?)。

示例:

public abstract class Animal{
public abstract void say();
}

public class Cat extends Animal{
public void say(){
System.out.println("Meow!");
}
}

public class Dog extends Animal{
public void say(){
System.out.println("Woof!");
}
}

public class Test{
public static void main(String[] args) {
Animal animal1 = new Cat();
Animal animal2 = new Dog();
animal1.say();
animal2.say();
}
}

说明:

  • Animal 是一个抽象类
  • Cat 和 Dog 都继承自 Animal,各自实现了 say 方法
  • Test 类中创建了 Cat 和 Dog 对象,并分别调用了 say 方法
  • Cat 和 Dog 对象都是 Animal 类型 —— 这就是多态,一个对象可以具有多种不同的形态

总结

Java 面向对象编程特点:

  • 封装有助于隐藏实现细节,提高代码的可读性和可维护性
  • 继承可以让子类获得父类的属性和行为,也可以在继承的基础上增加自己特有的属性或行为,从而提高代码的重用性
  • 多态可以让一个对象在不同的时刻具有不同的形态,从而使得代码的可扩展性更高

Java 继承和实现接口区别:

  • 继承是指一个类从另一个类中继承它的成员变量和成员方法,而实现接口是指一个类实现一个接口,从而获得接口中的方法声明。
  • 一个类可以继承另一个类,但只能实现一个接口
  • Java 中只能单继承,但可以实现多个接口
  • 继承主要是实现代码重用,而实现接口主要是实现接口之间的解耦
  • 继承可以使类之间形成继承关系,而实现接口则是类与接口之间的依赖关系

总结:如果需要实现代码重用,则可以使用继承;如果需要实现解耦,则可以使用接口会更加灵活些