Java基础03面向对象
来源:互联网 发布:快时尚品牌 知乎 编辑:程序博客网 时间:2024/06/06 04:31
Java 基础02Java编程基础
面向对象上
面向对象的概述
- 面向对象的概述:面向对象是一种符号人类思维习惯的编程思想,现实生活中存在各种形态不同的事物,这些事物之间存在着各种各样的联系,程序中使用对象来映射事物,使用对象的关系来描述事物之间的关系,这种思想就是面向对象;
- 面向对象的特点:封装性、继承性和多态性;
- 面向对象与面向过程的区别:面向过程就是分析解决问题的所需要的步骤,然后用函数把这些步骤一一是实现,使用的时候一个一个一次调用就可以了。面向对象则是把解决问题按照一定的规则划分为多个独立的对象,然后通过调用对象的方法来解决问题。
- Private关键字:所谓类的封装是指在定义一个类时,将类中的属性私有化,使用关键字private来修饰,私有属性只能在类中被访问。为了能让外界访问私有属性,需要提供一些使用public修饰的公有方法,隐藏实现的细节,提供公共的访问方式;
类和对象
- 类是对象的抽象,类是描述一组对象共同特征和行为;
- 对象是事物的具体化,类的实例化就是对象,对象是具体的表现形式;
构造函数
- 特点:方法名和类名一样,没有返回值类型,没有具体的返回值;
- 注意事项:如果在创建一个类的时候,没有自定义一个构造方法,则系统会默认创建一个无参空构造方法。如果在创建一个类的时候,有自定义了构造方法,则系统不创建构造方法;
- 由于有时候需要创建不同的构造方法,而系统不再创建无参空构造方法,因此建议手动创建一个无参空构造方法。
this关键字
- 概述:是一个关键字。代表当前对象的引用。在非静态方法中,this指的是调用方法的对象。那个对象调用了方法,this就代表那个对象。
- 应用场景:解决局部变量隐藏成员变量问题、成员方法中调用其他成员方法、在构造方法中调用其他构造方法;
static关键字
- 概述:是一个关键字。可以修饰成员变量和方法。
- 特点:随着类的加载而加载、优先于对象存在、被类的所有对象所共享、可以通过类名调用;
- 注意事项:在静态方法中不能使用this关键字、静态方法只能调用静态方法和静态成员;
代码块
- 代码块的概述:没有名称使用一对大括号括住的代码称为代码块;
- 静态代码块:前面加上static修饰的代码块,存在类中方法上。作用:加载驱动器;
- 构造代码块:作用:构造方法共性提取,存在类中方法上。可以给所有对象进行初始化;
- 局部代码块:作用:存在方法中。控制变量的生命周期;
- 代码块调用和执行的顺序:
调用:子类构造函数 —- 子类构造代码块 —- 父类构造函数 —– 父类构造代码块 静态代码块随着类的加载而加载;
执行:父类静态代码块—子类静态代码块—父类构造代码块—父类构造函数—子类构造代码块—子类构造函数
内部类
- 内部类的概念:将一个类定义在另外一个类的里面,对里面那个类就称为内部类。内部类的出现再次打破了Java单一继承的局限性。由于内部类都是在类中,因此它是类的成员,对类成员适用的修饰符也适合修饰内部类。
调用:外部类.内部类 变量名=new 外部类().new 内部类(); - 成员内部类:定义在类中方法外;
- 静态内部类:定义在类中方法外,适用static修饰;
访问:外部类名.内部类名 对象名 = 外部类名.new 内部类();或外部类名.内部类名.成员 - 局部内部类:定义在方法中的类;
匿名内部类:定义在方法中的类;可以在其后面调用方法或者直接作为参数进行传递;
格式:new Object(){
void method(){
System.out.println(“method run”);
}
}.method();
Java帮助文档
- 类使用:注意包名、版本号、构造方法、字段、成员方法;
- 方法使用:左侧:修饰符、static、返回值类型;右侧:方法名、参数列表
- 生成注释文档:javadoc –d . –version –author Hello.java
面向对象下
继承
- 继承的概念:现实生活中继承一般指的是子女从父辈中继承财产。程序中继承用来描述事物之间的所属关系。把多个类中的相同属性和行为进行抽取,封装到一个类中,然后再建立新的类的时候,不需要从头做起,继承封装好的类即可。
- 继承的特点:单一继承、多重继承;
super关键字
- 概念:super是一个关键字,代表父类的存储空间标识;
- 应用场景:解决子类变量隐藏父类变量问题、成员方法中调用父类成员方法、在子类构造方法中调用父类构造方法;
- super和this的区别:成员方法:this用于显示被局部变量隐藏的成员变量。Super用于调用父类的成员变量;成员方法:this在本类非静态方法中调用其他成员方法。Super在子类非静态方法中调用父类的方法;构造方法:this在子类的构造方法中调用其他构造方法。Super在子类构造方法中调用父类构造方法;
final关键字
- 是一个关键字,用于修饰类、成员变量和成员方法;
- 特点:修饰的类为最终类,不能被继承;修饰的方法为最终方法,不能被重写;修饰的变量是常量;
抽象类和接口
- 抽象类的概念:如果多个类中存在相同的方法声明,而方法体不一样,我们就可以只提取方法声明。如果一个方法只有方法声明,没有方法体,那么这个方法必须是抽象方法使用abstract修饰,而一个类中如果有抽象方法是,必须定义为抽象类。
抽象类的特点:抽象类和抽象方法必须用abstract修饰、抽象类不能被实例化、抽象类中有构造方法用于子类实例化使用、如果一个类继承了抽象类,那个继承它的子类要么是抽象类,要么抽象所有抽象方法。 - 接口的概念:如果一个抽象类中的所有方法都是抽象方法,这个时候就可以将这个类用另外一种方式来定义,即接口。
接口的特点:接口默认修饰符为public abstract、接口中方法默认修饰public abstract修饰、接口中的成员默认public final static修饰、接口不能被实例化、一个类实现了接口,要么是抽象类,要么实现接口中的所有方法; - 抽象类和接口的区别:成员变量:抽象类中可以有成员变量和常量。接口中只能有常量;成员方法:抽象类中可以抽象方法和非抽象方法。接口只能有抽象方法;构造方法:抽象类中有构造方法。接口中没有构造方法;与类的关系:抽象类与类的关系是继承。接口与类的关系是实现。
多态
- 多态的概念:对象的不同时刻表现出来的不同状态;或者某一事物的多做存在形态。
- 多态的前提:要有继承或实现关系;要有方法重写或实现;父类引用或父接口引用指向子类对象;
- 多态特点:成员变量:编译是看左边,运行时看右边;成员方法:编译时看左边,运行时看右边;
- 多态的利和弊:弊:父类引用不能使用子类特有成员;利:提高代码的扩展性和可维护性;
- 修饰符权限:private本类中使用、默认修饰符同一包下使用、protected不同包下子类使用、public任意地方;
- 修饰符使用规范:所有的类都用public修饰,并且一个类写一个Java文件、所有成员变量使用private修饰、所有成员方法用public修饰(不需要外界访问的可以使用private修饰)如果是接口和抽象类使用public abstract、所有构造方法使用public,如果是工具类或者单例类构造使用private修饰。
异常
Throwable
|–Error 错误:严重的问题,是处理不了的。要改正代码的。
|–Exception 非RuntimeException编译时异常:是需要处理的。编译期异常。
|–RuntimeException 运行时异常:不需要处理的,是需要改代码的。运行期异常。异常处理方案:
自己处理:try…catch…catch…finally
抛出处理:用throws关键字在方法上声明(抛出)。- 异常处理方式:
异常前处理: 不让异常发生
异常后处理:提前把想好的错误可能,并作出相应的措施; - 异常处理种类:
系统定义异常:系统提供的异常
自定义异常:自己定义异常 Exception和RuntimeException的区别
Exception 编译时期异常,必须处理的。如果在方法上,throws了该类型的异常,将来调用者必须处理。如果在方法内部,throw了该类型的异常,必须在方法上throws该异常。
RuntimeException 运行时期异常,是不需要处理的。要改代码的。如果在方法上,throws了该类型的异常,不需要处理。throw和throws的用法和区别
throw
用法:用在方法内部,后面跟的是异常对象名称。
区别:用throw抛出了编译时期异常,方法上面必须用throws抛出。
用throw抛出了运行时期异常,方法上面可以不用throws抛出。
throws
用法:用在方法声明上,后面跟的是异常类名。
区别:用throws在方法上声明了异常,内部可以没有throw
包
- 声明包:package com.jjdxm.example
- 引用包或导入包:import com.jjdxm.Animal;
- 编译:javac -d . hellojava.java
- 运行:java com.jjdxm.dog
- 打包jar -cvf hellojava.jar com
- 解包jar -xvf hellojava.jar 修改MANIFEST.MF添加Main-Class: com.jjdmx.dog
- 运行包java -jar hellojava.jar
Java 基础04多线程
- 面向对象03-java基础
- Java基础03面向对象
- java基础 面向对象
- Java面向对象基础
- java基础-面向对象
- java面向对象基础
- JAVA面向对象基础
- Java面向对象基础
- Java面向对象基础
- java基础----面向对象
- java 面向对象基础
- 【Java基础】面向对象
- java基础面向对象
- JAVA面向对象基础
- Java基础:面向对象
- java基础---面向对象
- Java基础--面向对象
- Java基础:面向对象
- #ifndef方式 && #pragma once方式
- PHP产生不重复随机数的5个方法总结(该文章转自酷笔记http://www.kubiji.cn/topic-id3976.html)
- swift初体验
- Android Architecture Blueprints----安卓架构详细分析
- 对nginx单线程限制带宽
- Java基础03面向对象
- ORA-01830:日期格式图片在转换整个输入字符串之前结束
- Hibernate 自动生成表问题
- submit和button
- 今天开始学习CSS
- MySql错误代码1045的解决方案
- PAT-B 1011. A+B和C (15)
- Java基础04多线程
- SQL四种语言:DDL,DML,DCL,TCL