OOP(Object Oriented Programming ,简称OOP)是面向对象语言,它基于面向对象编程(OOP)的概念和原则。OOP强调将现实世界中的实体(如人、动物、物品等)为对象,并通过Class类来定义这些对象的属性和方法。
OOP语言的特点
封装:封装是将对象的属性和方法结合在一起,形成一个独立的单元,并隐藏对象的内部实现细节,只对外提供有限的接口。
继承:继承是类与类之间的关系,是 is a之间的关系。一个父类可以有多个子类,一个子类只能有一个父类。子类可以拥有父类所有的方法。
多态:多态意味着一个接口,多种实现。在OOP中,这通常通过方法的重写和接口实现来实现。多态允许我们使用父类类型的引用来调用子类的方法,这增加了程序的灵活性和可扩展性。
抽象:抽象是提取复杂现实问题的本质特征,忽略非本质特征的过程。在OOP中,抽象通过类和接口来实现,它们定义了对象的公共属性和方法,但不提供具体的实现细节。
1.定义一个Book大类 Book book = new Book(),Book类的有参构造方法 创建一个名字为Book的类,包含了书籍的基本信息,如书名、价格、作者和类目,提供了相应的构造方法、getter 和 setter 方法,以及一个重写的 toString() 方法来生成书籍的字符串表示,在Book类中定义几个构造方法例
```
package cn.lnfvc.ken;
public class C0927 {
// 书名
private Stringname;
// 价格
private double price;
// 作者
private Stringauthor;
// 类目
private Stringtype;
//无参构造
/**
* C0927类的有参构造方法
* @param name 书名
* @param price 价格
* @param author 作者
* @param type 类目
*/
public C0927(String name,double price, String author, String type) {
this.name = name;
this.price = price;
this.author = author;
this.type = type;
}
public C0927() {
}
public StringgetName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public StringgetAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public StringgetType() {
return type;
}
public void setType(String type) {
this.type = type;
}
// public String toString(){
// return this.getName()+"-"+this.getAuthor()+"-"+this.getPrice()+"-"+this.getType();
// }
@Override
public StringtoString() {
return "C0927{" +
"name='" +name +'\'' +
", price=" +price +
", author='" +author +'\'' +
", type='" +type +'\'' +
'}';
}
}
```
2.定义了一个名为 Animal 的父类,它包含了 name 和 age 两个属性,以及它们的 getter 和 setter 方法,还有一个无参构造函数和一个 toString() 方法,用于输出动物的基本信息。又创建了 Main 类来包含 main 方法,并定义了 Mao 和 Cat 类作为 Animal 的子类。
```
//父类 生物
public class Animal {
private Stringname;
private int age;
public Animal(String name,int age) {
this.name = name;
this.age = age;
}
public StringgetName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Animal() {
}
@Override
public StringtoString() {
return "Animal{" +
"name='" +name +'\'' +
", age=" +age +
'}';
}
}
```
3.定义了一个名为Mao的类,它继承自一个假设存在的Animal类。Mao类用于表示具有特定属性的生物。该类包含一个私有成员变量isEyes,用于表示该生物是否有眼睛。此外,该类还提供了相应的getter和setter方法来访问和修改这个属性,以及一个toString方法用于返回该对象的字符串表示形式,还包含了两个构造函数,一个带参数的构造函数和一个无参构造函数。
```
public class Maoextends Animal{
private boolean isEyes;
public boolean isEyes() {
return isEyes;
}
public void setEyes(boolean eyes) {
isEyes = eyes;
}
@Override
public StringtoString() {
return "Mao{" +
"isEyes=" +isEyes +
'}';
}
public Mao(String name,int age,boolean isEyes) {
super(name, age);
this.isEyes = isEyes;
}
public Mao() {
}
}
```
4.创建了一个Interface接口,在Interface接口中 定义了一个名为 saySomething 的方法,该方法接受一个 String 类型的参数 msg,并返回一个 String 类型的值。
```
public interface TestService {
/**
*
* @param msg 规定要做的事
* @return 经过处理后的值
*/
StringsaySomething(String msg);
}
public class TestServiceImplimplements TestService{
@Override
public StringsaySomething(String msg) {
return "Ken说+msg";
}
}
```