什么是面向对象?
面向对象:
1)一切皆对象,Java中任何要处理的数据都是对象
‘a’, 123, “hello”, 图片 ,视频, 按钮,输入框 类 方法, 构造, 变量
2)面向对象
字符串的反转: StringBuilder:reverse()
数组的排序 :Arrays.sort();
3)三大特征: 封装 继承 多态
面向对象的步骤:
1:设计类 class Person{}
a:JDK提供的类: String Scanner Random
b:第三方库提供的类 FileUtils BeanUtils
c:自定义类 Person Student
2:使用类去创建对象
a:创建有名对象
Person p = new Person();
b:创建匿名对象
new Person();
3:通过对象调用方法
p.eat();
new Person().eat();
2:面向对象内存图
3:this关键字
this本质上就是一个引用变量,这个引用就是来存对象地址的
哪个对象调用this所在的方法,this就指向哪个对象
在一个类的任何一个方法中都有一个隐藏的this
1:有参构造
当局部变量和成员变量重名的时候来区分
2:set方法
当局部变量和成员变量重名的时候来区分
3:成员方法
4:构造方法的相互调用
public Person(String name){
this.name = name;
}
public Person(String name, int age) {
//this.name = name;
this(name);
this.age = age;
}
4:匿名对象
/*
-
匿名对象的特点:
-
1:匿名对象没有名字
2:匿名对象用来简化代码的书写 -
2:匿名对象用过一次之后,空间就消失,不能再用第二次,因为空间再也找不到了
-
匿名对象的 作用:
-
1:临时调用一个方法
-
new Person().eat();
-
2:用于方法的传参和方法的返回类型
*/
5:类与类之间的关系
1:组合关系
描述的是一个类的成员变量是另一个类的一部分
每个司机都有一辆车:
class Car{
private String brand; //品牌
private String color; //颜色
private int price; //价格
}
class Driver{
private String name;
private int age;
private Car car;
}
2:继承关系
2.1 概述
生活中:一类人通过某种方式获取另一类人的财产
Java中:一些类通过某种方式获取另一些类的成员
描述的是类与类之间的包含关系,一个类是两外一个类的一种
人类 动物类 车类 父类 基类 超类
学生类 猫类 电动车类 子类
继承:extends
人类
class Person{
}
学生类继承人类:
class Student extends Person{
}
2.2 继承的父子成员特点
-
子类继承父类:
- 1:可以访问父类的非私有成员变量
- 2:可以访问父类的非私有成员方法
在java中任何一个类都有父类,如果没有指定该类的父类,则父类默认是Obejct
3:继承的两个问题
继承的缺点:
1)单继承, Java继承了一个类之后,再也不能继承别的类
2)继承让类与类之间产生耦合关系(高内聚,低耦合) ,后边的接口可以解决这个问题
1:Java支持单继承(一个类只能有一个爹)
Java继承了一个类之后,再也不能继承别的类
Java不支持类的多继承,但是支持接口多继承
2:Java支持多层继承
任何一顶层的类的父类默认都是Object