面向对象的总结
面向对象:是一种以对象为主体的编程思想,以对象的个方面属性和各种方法为主体进行编程,在主程序需要该对象时进行调用,编程者以指挥者的身份让各个对象各司其职。
类与对象:
把数据及对数据的操作方法放在一起,作为一个相互依存的整体——对象。对同类对象抽象出其共性,形成类。
类可以说是对象的抽象表达,类是一个模板,它描述一类对象的属性和行为。而对象是类的具体体现,对象是具体存在的事物,对象的属性和行为是由类决定的。比如:人 ,是一个类:具有眼睛,鼻子,耳朵等等属性,会跑会跳等等行为,那么每一个具体的人都是一个对象。
类的定义:
类的重要性:类是java的基本组成单位。
类的构成:属性和行为
属性:在类中通过成员变量来体现。
行为:在类中通过成员方法来体现。
例:下面展示一些 。
/*
手机类:
类名:
手机(Phone)
成员变量:
品牌(brand)
价格(price)
成员方法:
打电话(call)
发短信(sendMessage)
*/
public class Phone{
//成员变量
String brand;
int price;
//成员方法
public void call(){
System.out.println("打电话");
}
public void sendMessage(){
System.out.println("发短信");
}
}
这个时候我们有了类,我们只需在主函数中创建对象就可以使用成员变量和成员方法了。
创建对象
下面展示一些
public class Phone{
public static void main(String[] args)z{
//创建Phone类的对象p
Phone p=new Phone();
//调用对象p的price属性
int a=p.price();
//调用p的call方法
p.call();
}
}
成员变量与局部变量
当方法类的局部变量与类中的成员变量重名,且要将局部变量赋值给成员变量时,我们可以使用关键字this来修饰成员变量:
成员变量和局部变量都能在成员方法中使用但是二者有很多不同点(方法中的形参都是局部变量)。
**构造方法:**通过构造方法将对象所传参数传递给类,构造方法是与创建对象同时被调用的方法,也可以说是类名的重载。构造方法分为无参构造和有参构造,无参构造顾名思义
就是创建对象时对象没有进行传参,一般编程软件会给类匹配一个无参构造方法,但是为了满足在创建有传参需要的对象时的需求,我们一般手动编写无参构造方法,在对方法进行重载,建立有参构造方法,这样就能满足在编程的不同需求。
下面展示一些 内联代码片
。
=/*
学生类
构造方法:
作用:创建对象
功能:完成对象数据的初始化
格式:
修饰符 类名(参数) {
}
修饰符一般用:public
*/
public class Student {
private String name;
private int age;
//构造方法
//无参构造
public Student() {
System.out.println("无参构造方法");
}
//有参构造
public Student(int i){
age=i;
System.out.println("有参构造方法");
}
public void show() {
System.out.println(name + "," + age);
}
}
创建对象:
下面展示一些 码片
package com.itheima_07;
/*
测试类
*/
public class StudentDemo {
public static void main(String[] args) {
int age=18;
//创建对象,自动调用无参构造方法
Student s = new Student();
//创建对象,自动调用有参构造方法
Student s1= new Student(age);
s.show();
}
}
封装
一层含义是把方法和属性封装成一个密不可分的整体,把对象的属性和行为封装成一个独立的单元。另一层含义是指“信息隐藏”,可以将对象的属性隐藏起来,仅允许外界用户使用对象的属性但不允许更改。
实现封装private
private:被修饰变量只能在本类中进行调用。
只需要在类中定义属性时用private加以修饰即可实现用private进行封装。
下面展示一些 内联代码片
。
private int age;
private String name;
因为被private封装的类其成员变量不能直接被外部成员所掉用和更改,所以我们提供get()和set()两个方法作为接口来满足外部成员获取和更改成员变量的需要:
下面展示一些
public class Student {
//成员变量
private String name;
private int age;
//构造方法
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = 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 void show() {
System.out.println(name + "," + age);
}
}