一:初识Java
1.Java文件的步骤
1.编写源文件(.java)
2.编译(把Java文件转换为字节码文件)
3.运行(.class)
2.Java中命名的规则
A.
包名: |
---|
由字母数字_$组成,不能以数字开头 |
包名首字母小写 |
不能有点【.】 |
B.
java类名 |
---|
由字母数字_$组成,不能以数字开头 |
首字母大写 |
要和文件名一致 |
3.面向对象设计步骤
1.提取类
2.提取类中的静态属性—》字段
3.提取类中的动态属性—》方法
4.类的三大特性
封装: | 将具体的实现步骤私有化,提供共有名字让其可以操作 |
---|---|
继承: | 子承父 |
多态 | 一个事物的多种形态 |
5.Java中的关键字
1.final(常量修饰符)
作用:可以用来修饰变量,方法和类
注意:
final修饰 | 特点 |
---|---|
变量 | 只能初始化一次值 |
方法 | 方法不能被重写 |
类 | 类禁止被继承 |
2.static(静态)
区别C#的一点:可以通过类名去点静态成员,也可以通过对象名【但是一般不建议用对象名去点】。
3.this和super
this:当前类的对象的引用。
super:调用父类的成员【类似于C#的base关键字】。
6.构造函数
1、作用:new对象,顺带给成员变量赋值
2、语法:
访问修饰符 类名(形参){}
3、分类:
根据参数个数:有参和无参
根据显示方式:隐式和显示
【当没有自定义构造函数的时候,就有一个隐藏的无参构造函数 ,而一旦手写构造函数,那么就不会存在无参构造函数】
7.访问修饰符
访问修饰符 | 范围 |
---|---|
public | 任何地方都可以访问,本类子类直接访问,其他类通过对象名 |
protected | 本类,子类【同包,不同包】可以访问 |
friendly | 本类,同包子类可以直接访问 |
private | 只有本类可以访问 |
二:继承
1.定义:两个类之间的关系
2**.语法**:
子类 extends 父类
3.子父类之间的关系
A.成员:子类可以拥有父类中的非private成员
B. 构造函数:
子父关系: | 当调用子类构造函数时,一定会先调用父类的无参构造函数 |
---|---|
调用顺序: | 先父后子 |
默认情况 | 先父类的无参 |
C.子类显式调用父类的构造函数
语法:在大括号里写super(); 【要求:在调用构造函数中,只能位于第一行】
4.关键字super
定义:当前类的父类成员引用
运用:
super()----->调用父类构造函数
super. ------调用属性或方法
5.优点:
A、提高的重用性
B、子类可以扩展自己功能(子类可以拥有父类的成员,还可以具有自己的特性)
6.缺点:
A、增加耦合:父类拥有的子类一定有,父类一旦被修改一定会影响到子类
B、继承是一种侵入式编程
7.区别Java和C#的重写
在C#中要表明是重写一定要在父类中显示定义(virtual,abstract),而Java中可以省略
三:多态
1.定义:一种事物的多种形态
2.实现方式
A.重载
特点 |
---|
在同一个类 |
名相同,参数不同(个数不一样,对应下标的类型不一样) |
B.重写
1.定义:实现多态,多个类之间的多态
2.前提:有继承关系
3.特点:不同的类,方法名,参数个数和类型相同
4.实现
A.普通的重写:相同的方法名,参数个数和类型,注释可写可省略(@override)
B.抽象方法
特点 |
---|
没有方法体 |
必须在抽象类中 |
子类必须重写方法,除非子类也是抽象类 |
C.抽象类
特点 |
---|
不能实例化 |
包含抽象方法,也包含普通方法 |
3. 判断数据类型
1.关键字:instanceof
2.语法:
对象/变量名 instanceof 数据类型
3.Java中类/对象之间关系
关系 |
---|
is a:继承关系 |
has a:包含关系 |
like a:像关系 |
4.C#关键字
-
is(判断数据类型)
-
as(强转)
4.子父转换
1.向上转型:子类到父类【子类对象赋值给父类引用】
2.向下转型:父类到子类【将一个父类对象名强转为子类】
四:接口
1.定义
是一系列方法的声明,一些方法特征的集合
2.语法
public interface 接口名{}
3.作用
约束子类必须拥有某种行为【规定了子类一定拥有某个功能】
4.子类实现接口
子类 implements 接口名1,接口名2
//【如果子类要继承父类,继承在前,接口在后】
子类 extends 父类 implements 接口名1,接口名2
5.特点
不能被实例化 |
---|
只能是抽象方法,访问修饰abstract【默认访问修饰:public abstract】 |
成员变量只能定义静态常量【默认访问符:public static final】 |
不能有构造函数 |
6.继承与接口
继承:单继承–》一个类有且只能有一个父类
接口:多实现–》一个类可以实现多个接口
7.接口和抽象类
相同点 | 不同点 |
---|---|
都不能被实例化 | 关键字:抽象类:abstract;接口:interface |
约定子类必须实现方法 | 接口只能有抽象方法 抽象类可以有非抽象方法 |
接口不能有构造函数 抽象类可以有构造函数 | |
成员变量: 抽象类可以有非静态的,可以不是常量 接口:用static final修饰 |
8.C#接口与Java接口的不同之处
C# | Java | |
---|---|---|
语法 | 子类 : 父类, 接口名1,接口名2 | 子类 implements 接口名1,接口名2 |
变量 | public static const | public static final |