一.面向对象
1.1 面向对象
面向对象:针对具体的对象,是把构成的问题的事务分解成各个对象,建立对象为了描述某个事务在整个解决问题的步骤中的行为和特性。
1.2 面向对象的三大特性
封装: 把相关的数据封装成一个“类”组件
继承:是子类自动共享父类属性和方法;
多态:增强软件的灵活性和重用性
二、类和对象
2.1 对象
万事万物皆对象,可以将身边的任何一件事以及任何一个事物作为对象,同时,对象还具有属性(对象具有的各种特种),以及属性值(每个对象的每个属性拥有的特定值)以及方法;
例如:一个人是一个对象,对于人的姓名、身高、体重等是属性,人可以睡觉、吃饭等都是方法;
2.2 类
类是java程序的核心,它定义了对象的形状和本质,可以用类来创建对象。
类声明和类体
// 定义一个 Student 类
public class Student{
// 定义两个属性 name 和 age
String name;
int age;
// 定义一个构造方法,用来初始化对象
public Animal(String name, int age) {
this.name = name;
this.age = age;
}
// 定义一个 eat 方法,用来表示吃东西的行为
public void eat() {
System.out.println(name + " is eating.");
}
// 定义一个 sleep 方法,用来表示睡觉的行为
public void sleep() {
System.out.println(name + " is sleeping.");
}
}
2.3类和对象的关系
类是对象的模板,对象是类的实体。类描述了一类事物的共性特征,而对象则表示了一类事物中的个体差异;类是抽象的,对象是具体的。类只是一个概念,它不能直接使用,而对象是真实存在的,它可以被创建、操作和销毁。
类是静态的,对象是动态的。类在编译时就已经确定了,它不会随着程序的运行而改变,而对象在运行时才被创建,它可以根据不同的情况而改变自己的状态和行为。
类和对象之间存在一对多的关系。一个类可以创建多个对象,每个对象都属于该类,但是每个对象都有自己独特的属性值和方法实现。
三、方法
3.1 方法定义
一个方法包括方法的名称、主体、返回的数据类型
// 方法名称 Slove
public int Slove(){ // 返回值类型int
return 1; // 主体部分
}
3.2 有参构造和无参构造
有参构造:可以理解为带有参数的构造方法
// 无参构造
// 方法名称 Slove
public int Slove(){ // 返回值类型int
return 1; // 主体部分
}
// 有参构造
// 方法名称 Slove
public int Slove(int sum){ //参数列表(数据类型 参数1,···)
return sum; // 主体部分
}
四、封装
4.1 封装的定义
将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问
4.2 封装的好处:
4.3如何使用封装:
案例:
public class phone {
// 成员变量
private String brand;// private 权限修饰符 被修饰后的成员只能在本类中才能访问
// private String brand
private double price;
// set 方法: 给成员变量赋值
// get 方法:对外提供成员变量的值
// 成员方法
public void setBrand(String brand){
this.brand = brand ;
}
public String getBrand(){
return brand;
}
public void setPrice(double price){
if(price>=1000&&price<=5000){
this.price=price;
}else{
System.out.println("太贵了");
}
}
public double getPrice(){
return price;
}
public void call(){
System.out.println("手机在打电话");
}
public void playGame(){
System.out.println("手机在玩游戏");
}
}
五、重载、构造
5.1 重载:
1、参数类型、个数、顺序至少有一个不相同。
2、不能重载只有返回值不同的方法名。
3、存在于父类和子类、同类中。
5.2构造
构造分为有参构造和无参构造
// 空参构造
public phone(){
System.out.println("看");
}
// 带参构造
public phone(String brand,double price){
this.brand=brand;
this.price=price;
}