类的创建(自定义类)
类的构造方法
- 构造方法是一种特殊的方法,对象的创建就是通过构造方法来完成的,其主要功能是对象的实例化和属性的初始化,当类实例化一个对象时会自动调用构造方法。
- 构造方法的特点:
- 没有返回值;
- 名称和类名完全相同(包括大小写);
- 任何一个类都有隐式的默认的无参构造方法;
- 可以有参数 一旦编写了带参的构造方法,则默认隐式的无参构造失效 ;
- 构造方法可以重载,根据传入实参决定调用哪个构造方法(不同在于参数的个数,参数类型,参数顺序) ;
- 不能被继承,因此不能被重写;
- 同一个类中构造方法的互相调用:
A. 使用this() 语法调用 只能出现在其他构造方法的第一句话;
B. 低参构造可以调用多参构造,所需参数可以通过静态变量来提供;
C. 同一类中多构造方法互相调用时,一定要保证有一个方法没被调用,作为出口; - 子类可以调用构造方法。
类的三大特性
封装
- 对于自定义类中的属性进行封装,即私有化
- 目的:保证属性的安全级别,查看和修改受到限制
- 步骤:
1.将属性私有化,使用private关键字修饰
2.提供对应的get和set方法
继承(extends)
- 当发现多个类都具有相同的属性和方法的时候,可以进行二次抽象抽出来的类为父类,被抽象的类定义为子类
- 当一个类继承另一个类时,需要使用extends关键字,放在在子类类名后,后接父类类名
- 例如:
public class 类名 extends 父类名{
}
- 特性:
1.子类中可以通过super关键字去调用所有父类的非私有资源
2.子类构造方法中可以通过super()调用父类构造方法,但必须在第一句话
3.子类构造方法中super()和this()不能同时出现
4.父类不能调用子类的资源
5.单继承原则:一个类只能有一个父类,可以有多个子类
多态
- 父类(接口)的引用指向子类(实现类)对象,子类(实现类)重写父类(接口)的方法,使父类的方法可以表现出多种形态
- 当使用一个父类引用去调用一个方法时:
1.先判断父类中有没有这个方法,如果没有,直接报错;
2.判断这个父亲所指向的子类对象中有没有重写这个方法,如果重写了就执行重写后的该方法;如果没有重写,则执行父类中的方法。 - 优势:
1.优化代码,多个类相同的属性和方法抽出称为一个新的类
2.父亲的引用作为方法的返回值,则该方法就可以返回任意子类对象
3.父亲的引用作为方法的参数,则该方法可以接收任意的子类对象
关键字
abstract
- 使用范围:类,方法
修饰类(抽象类)
- 使用关键字abstract修饰的类称为抽象类
public abstract class 类名{
}
- 抽象类的特点
1.不能被new成实体对象
2.可以放抽象方法,也可以放普通方法
3.通过子类使其具备意义
修饰方法(抽象方法)
- 使用关键字abstract修饰的类称为抽象方法
public abstract 返回类型 方法名(参数列表);
- 特点:
1.没有方法体,参数列表后直接分号结束
2.抽象方法必须放在抽象类或者接口中
3.子类或者实现类必须重写抽象方法 - 注意:设计阶段建议使用抽象方法
final
- 使用范围:类,变量,方法
修饰类(最终类)
- 使用关键字final修饰的类称为最终类
public final class 类名{
}
- 特点
1.不能有子类
2.不能有抽象方法
修饰方法(最终方法)
- 使用关键字final修饰的方法称为最终方法
public final 返回类型 方法名(参数列表){
}
- 特点:
1.不能被子类重写
2.必须有完整的方法体 - 注意:最终方法不一定在最终方法中
#### 修饰变量(常量) - 使用关键字final修饰的变量称为常量
public final 类型 常量名; //常量名全大写
- 特点:常量不能被改变
static
- 使用范围:方法,变量,代码块,内部类
修饰方法(静态方法)
public static 返回类型 方法名(参数列表){
}
- 特点:
1.可以直接使用类名调用静态方法
2.修饰的方法中不能有this关键字
3.由static修饰的方法,可以调用static修饰的方法或者变量,不能访问非静态资源
4.非static修饰的方法可以调用static修饰的资源
修饰变量
static 类型 变量名;
- 特点:
1.可以直接使用类名调用静态属性
2.此属性变为所有对象共享的属性,此属性被保存在全局数据区中(方法区中),即元数据
修饰代码块(静态代码块)
代码块
- 分类:
1.普通代码块:方法中使用,主要用于创建作用域
2.构造代码块:直接放在实体类中,创建对象时,构造方法之前执行 ,每次new对象都会执行
3.静态代码块:static修饰,放在实体类中
4.同步代码块:线程中保证数据安全使用的代码块
synchronized(锁对象){
}
静态代码块
static{
}
- 特点:
1.静态代码块仅在类加载时执行一次
2.必须有主方法才能执行
3.执行顺序在主方法之前 - 注意 :在子父类都存在静态代码块时,创建子类对象,则先执行父类静态代码块,再执行子类静态代码块,再执行父类的构造代码块,再执行父类的构造方法,再执行子类的构造代码块,最后执行执行子类的构造方法
this
- this关键字用于指向当前对象或类实例,通过this调用当前对象的方法或者属性
super
- super关键字用于指向父类对象,通过super调用父类的非私有资源
访问修饰符
public
- 使用范围:类,变量,方法,接口
- 特点:可以跨包访问
protect
- 使用范围:变量,方法,接口,不能修饰外部类
- 特点:如果是继承关系,则可以跨包访问,否则不可跨包访问
default(什么也不写)
- 使用范围:类,变量,方法,接口
- 特点:不可跨包访问,但可以跨类访问
private
- 使用范围:变量,方法,接口,不能修饰外部类
- 特点:不能跨类使用,只能在本类中使用
标签:调用,构造方法,子类,面向对象,修饰,父类,方法 来源: https://blog.csdn.net/weixin_45308928/article/details/115006461
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。