1、面向对象的概念
面向对象是一个抽象的过程,先跟面向过程做对比,比如把一只大象装进冰箱,面向过程只注重步骤,先打开冰箱,把大象放进去一个过程。
面向对象是注重在于操作对象,冰箱、大象都可以看作各自一个独立的对象,面向对象就要思考如何把大象装进冰箱,冰箱的属性有长宽高重量...,大象的属性也有体重,名字,年龄等,可以思考各自功能也就是利用冰箱的装大象的方法,大象有吃东西的功能,叫的功能,还有走的功能,这些在程序中都叫做方法,要想更加理解面向对象首先了解类与对象的关系。
2、什么是类与对象
用来描述一类事物,东西,有着相同的特征或者是一个分类,比如人类、球类、职业类,都可以细化到具体个体事物中去,而对象就是类的具体个体事物对象,在java中个体事物术语称为实例对象。比如职业类、教师就是一个类的实例对象。
3、怎么创建一个对象呢?
记住一句话:以类为模板创建对象! 比如以教师类创建了一个英语老师对象出来。
创建语法:new 类名();
举例:Teacher teacher=new Teacher();
4、如何操作对象的属性跟方法
对象的属性是 对象名.属性=赋值、对象名.属性 进行赋值进行操作。
<strong> class Student{//设计一个学生类
int age; //年龄
int weight; //体重
String name; //姓名
public void eat(){ //无返回值
System.out.println("该类有吃的功能");
}
public class TestStudent{
public static void main(String[] args){
Student stu=new Student();//以类创建一个学生对象
stu.age=18; // 对象名.属性=赋值
stu.name="阳彦刚";
stu.weight=130;
stu.eat();//调用吃的方法
System.out.println("我的名字叫"+stu.name+"今年"+stu.age+"岁");//取值 对象名.属性
}
} </strong>
封装:
封装的概念: 简单的就是打包,比如手机的硬件固定在一个贴合里。从设计者到使用者的一个过程。
1.1怎样达到封装呢?加上访问权限修饰符
private 同类
默认不写 同类+包
protected 同类+子类+同包
public 同类+同包+其他包
private(私有的,只能在当前类才能使用) < 默认不写<protected<public (公共的)
一般比较常用:private public
1.2标准的javabean(标准的java类):
1.类被public所修饰
2.提供一个无参数的构造方法
3.字段都是private修饰
4.给每个字段提供一个setter和getter方法
1.3注意: 如果你的字段是布尔类型的话
getter方式: is字段(字段首字母必须大写)
this介绍
1.1用处:this:看当前方法是被哪个对象所调用,谁调用我,我就属于谁
this:表示当前对象
this有什么作用:
1. 解决成员变量和局部变量的二义性
2. this可以调用构造方法 调用构造方法的时候,必须要在构造方法中第一句
3. this可以作为参数进行传递,也可以作为返回值进行返回
继承:
2.1概念 :子类继承父类的过程,继承者可以拥有父类全部方法属性。父类(超类,基类,根类),子类(派生类,拓展类),一个子类只能一个父类。
2.2特点:类与类之间只是单继承,不能多继承,可以间接继承(没有直接继承的父类),直接继承(有直接继承的类)
2.3好处提高代码复用性,子类只需要写特有的功能或者字段可以把公共的代码 抽出到父类里面
2.4:继承语法格式: class A extends B
2.5注意:子类能继承父类哪些东西?
字段(属性) 方法 ----->前提都是不能被private修饰的
2.6构造方法是不能被继承的每个类都有1个基类: Object 类 ,如果没有看到显示的继承,那么它隐式继承了 Object类(每个类都使用object作为超类,所有对象(数组)都实现这个类的方法),属于lang包,无需导5个线程的方法,1一个反射的方法,clone finallize(GC)
//返回:类的全限定名@哈希值的16进制形式
Public String toString()
{return getClass().getName()+"@"+Integer.toHexString(hashCode())}
public native int hashCode();//使用native修饰表示实现该方法使用的非java语言
//返回 == 判断的结果
public boolean equals(Object obj){ return this==obj}
方法覆写(覆盖、重写、Override)
为什么要覆写
当父类中的一个行为不满足子类需要的时候,在子类中覆写父类中的方法
3.1概念:
发生在继承中,子类对父类的方法重写,继承父类能用的方法同时也会有不合适的方法,所有需要子类重写该方法。
3.2好处:既可以拥有父类属性方法、也可以给自己重写有用的方法。
3.3要求:在子类中声明方法,与父类中某个方法的方法签名一致,权限修饰词不小于父类方法的权限修饰词,返回值类型不大于父类方法的返回值类型。不能重写:static修饰的 private修饰的
3.4重写经典掌握:
自定义类中toString方法与equals方法的重写:
规范:重写toString-->返回每一个属性名称以及对应的值
重写equals -->如果所有属性的值都相等则返回true,否则返回false.
Super:就一个关键字
-
使用场景:super.属性/方法--->调用父类的属性/方法
访问父类中的private属性 在父类提供getter/setter
2. 在子类构造方法中调用父类的构造方法(父类构造方法访问自己的private属性)在子类构造方法中调用getter/setter
3.注意:
(1)只能在构造方法中的第一行。
(2)不能与this同时存在否则会报错
(3)如果没有显式的this或者super则在构造方法的第一行有默认代码:super();
(4)判断继承关系中各个构造方法的执行顺序
(5)父类无无参构造方法,在创建子类对象会报错。如果在创造子类构造方法,有了显示的super(有参列表)或this(有参列表),隐式的无参super(),会失效。
4.多态:
4.1概念:一个变量在编译期是一个类型在运行期是另一个类内存分析
注意:使用多态时,子类与父类有相同属性(以编译期为准,以左边为准)
4.4画图体现
4.5语法格式
父类 子类名=new 子类();//条件:一个建立在继承关系中
4.6多态方法调用以及参数传递(很重要)