面向对象:当需要实现一个功能时,不关心具体的步骤,而是找一个已经具有该功能的的人或物体,通过该人或物体来实现这个功能。(强调对象)
面向对象的三大基本特征:封装、继承和多态。
类与对象的关系:
- 类是对一类事物的描述,是抽象的。
- 对象是一类事物的实例,是具体的。
- 类是对象的模板,对象是类的实体。
类的创建:
//创建类
public class Person {
//创建成员变量
String name;
int age;
//创建成员方法
public void show(){
Syetem.out.println("我叫" + name + ",今年" + age + "岁了。")
}
对象的使用:
//创建对象
//格式:
//类名 对象名 = new 类名();
Person person = new Person();
//为成员变量赋值
person.name = "张三";
person.age = 20;
//
1.1封装性:
使用封装,增加了代码的安全性
(1)方法是一种封装
(2)使用关键字private也是一种封装
使用private:
//定义格式
private 数据类型 变量名;
//使用private关键字对类进行封装
public class Person {
private String name;
private int age;
//对上面两个成员变量进行标准类的定义
public Person()
{
}
public Person(String name, int age)
{
this.name = name;
this.age = age;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public int getAge()
{
return age;
}
public void setAge(int age)
{
this.age = age;
}
需要注意的是:对于基本类型当中的boolean类型,getxxx方法一定要写成isxxx
2.2.1封装的优化——this关键字的使用
格式:this.成员变量名
可以说 this 关键字通过谁调用的方法,谁就是this
public class person{
private String name;
private int age;
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public int getAge()
{
return age;
}
public void setAge(int age)
{
this.age = age;
}
public person()
{
super();
public person(String name, int age)
{
super();
this.name = name;
this.age = age;
}
}
2.2.2封装的优化——this关键字的使用
public class person{
String name;
int age;
//无参构造
public person()
{
}
//全参构造
public person(String name, int age)
{
this.name = name;
this.age = age;
}
注意:
1.即使不提供构造方法,系统也会自动给出;
2.自己定义后,系统不再给出
3.构造方法可以重载,也就是说,可以定义参数,也可以不定义参数
3.继承
3.1继承的格式:
//继承的格式
class 父类名称{
、、、、、、
}
class 子类名称 extends 父类名称{
、、、、、、
}
3.2成员方法的重名——重写
方法重写:在子类中出现与父类一模一样的方法时(即方法名,返回值类型,参数列表都相同时),覆盖重写父类方法的内容。
方法重载与方法重写的区别:
方法重载:方法名一样,参数列表不一样
方法重写:方法名一样,参数列表一样
3.3继承的构造方法(super关键字):
子类在继承父类的构造方法时,不写会赠送super(),写了super语句时,super语句只能有一个;并且是构造方法的第一个语句
4.多态
多态:同一行为,具有多个不同的形式(在代码中,就是父类指向子类对象)
//格式
父类名称 对象名 = new 子类名称();
//或者 用接口的时候
接口名称 对象名 = new 实现类名称();
两种访问成员变量的方法:
(1)直接通过对象名访问
(2)间接通过成员方法进行访问