1 类的组成
定义类的时候,需要关键字:class
在类中可以写:属性、方法、构造方法!
构造方法:
1、用于创建对象;(程序员在使用关键字:new的时候,会自动执行对应的构造方法)
2、在对象创建的过程中给成员变量赋值;
注意:
构造方法可以重载;
2.This关键字
This的概念:当前对象的引用;(正在调用方法的这个对象)
This主要作用:区分成员变量和局部变量;
3.匿名对象
没有名字的对象就是匿名对象;
好处:可以节约一个变量内存空间;
缺点:这个对象只能使用一次,且在创建成功的时候必须立刻使用,否则过了这一行就不能再使用了;
注意:
匿名对象可以作为参数,也可以作为返回值使用;
4 继承
组合概念
一个类(A)的成员变量的位置,拥有了另一个类(B)型的变量,此时A类和B类就是组合关系;
继承的概念
一个类(A)与另一个类(B)产生了父子关系,就是A继承了B类;
好处:
子类对象可以直接使用父类非私有的属性和方法!
(私有的属性,可以继承,但是不能直接使用,父类必须提供get与set方法,子类可以通过get与set方法,使用父类的私有的属性)
弊端:
类与类之间的耦合度高!
继承的代码格式
Java提供了一个关键字:extends
Public class 子类 extends 父类{
//属性。方法。构造方法
5. 方法重写的概念
在继承体系中,子类中拥有与父类一模一样的方法,叫做重写;
(子类中的方法的权限必须大于或等于父类的权限,返回值和参数类型必须小于或等于父类的类型)
6 继承中成员变量访问的特点
当子父类成员变量中出现了重名的变量的时候,在子类的方法中,会使用子类的成员变量的值;
当子父类成员变量中出现了重名的变量的时候,在父类的方法中,会使用父类的成员变量的值;
7 Super关键字
含义:父类对象的引用;代表该关键字所在的类的父类对象;
注意事项:super一般写在子类中;不能写在static方法中;
在子类中访问父类的非私有的属性格式:
Super.属性名;
在子类中访问父类的非私有的方法格式:
Super.方法名(参数列表值);
8 This与super关键字在构造方法中的使用
构造方法不存在重写!
构造可以重载;
当构造方法重载的时候,可以使用this关键字在其中一个构造方法中调用其他的构造方法;(参数多的调用参数少的)
This在本类的构造方法中调用本类的重载的构造方法的格式:
This(参数值);
在子类的构造方法中可以使用Super(参数值)的形式调用父类的构造方法!
注意事项:
1、如果子类的构造方法中,什么都不写,默认会自动调用父类的空参数的构造方法;
2、如果手动写上了调用本类的构造方法或父类的构造方法,那么默认的调用将自动消失;
3、This()和super()不能同时出现在同一个构造方法中;
4、调用其他构造方法的代码只能写在第一行;
5、父类对象一定是优先于子类对象存在!
9 This与super的总结
调用属性:
this.属性名; 调用自己类的成员变量;必须写在本类中;
Super.属性名; 调用父类的成员变量;必须写在子类中;
调用成员方法:
This.方法名(参数值)或方法名(参数值); 在自己的类中,调用自己类的普通方法;
Super.方法名(参数值); 在子类中,调用父类的重写的方法;
调用构造方法:
This(参数值); 在自己的构造方法中,调用自己类的其他的构造方法;
Super(参数值); 在子类的构造方法中,调用父类的指定的构造方法;
10 抽象类的概述
“抽象方法”,属于一种不完整的方法,只含有一个声明,没有方法主体。
使用了关键词abstract声明的类叫作“抽象类”。如果一个类里包含了一个或多个抽象方法,类就必须指定成abstract(抽象)。
简单记:包含抽象方法的类一定是抽象类;
抽象类中可以没有抽象方法;
Java提供了一个关键字表示抽象的含义:abstract
抽象方法的格式:
Public abstract 返回值类型 方法名(参数列表);
抽象类的格式:
Public abstract class 类名{
属性
构造方法
成员方法
抽象方法
11 关于抽象类的总结
1、抽象类不能直接创建对象;(不能new)
2、子类必须重写父类的所有的抽象方法,否则子类也只能是抽象类;
3、抽象类一定是父类吗? 是!是不断向上抽取而来的!
4、设计时由具体类抽取出抽象类,而开发阶段应该先定义抽象父类,再根据不同需求由父类定义子类。
5、抽象类中可以没有抽象方法;