学习java的第三周

1.static关键字(特殊的访问方式)

特点:1)随着类的加载而加载;

2)优先于对象存在(不能和this共存);

3)被静态修饰的可以被多个对象共享;

4)被静态修饰的变量,方法(静态变量,静态方法)

注意事项:静态只能访问静态

静态成员的访问方式:         类名.变量             类名.方法名()

2.代码块(使用{}包裹起来的内容)

分类:局部代码块 :在方法定义中使用 ;作用:限定局部变量的生命周期

 构造代码块:在类的成员位置(类中,方法外),使用{}包裹起来;作用:给类中的一些成员进行数据初始化

 静态代码块(静态代码块只加载一次):  在类的成员位置,直接使用 static{},特点:随着类的加载而加载,优先于对象存在;

优先级: 静态代码块>    构造代码块  >  构造方法

3.继承(将多个类的将多个类的共性内容抽取到一个独立的类中,然后这多个类和独立的这个类产生一种继承的关系)(关键字extends)

特点:

1)类与类之间的关系,继承关系,只支持单继承 

格式   class 子类名 extends 父类名{}
2)不支持多继承,但支持多层继承

好处:
1)提高代码的维护性!
2)提高代码的复用性!

继承中,每一个成员变量的关系问题
成员变量(遵循一个原则:就近原则)
a)子类继承父类,如果子类中的成员变量名称和父类的成员变量名称不一致,分别访问;
b)子类继承父类,如果子类的成员变量名称和父类的成员变量名称一致:
1)首先在子类的局部位置找,是否存在局部变量名称,如果有,就使用
2)如果没有,就在子类的成员位置找,是否存在这个变量,如果有,就使用
3)如果在子类的成员位置中没有找到,直接在父类的成员位置中找,如果有,就使用
4)如果父类的成员位置都没有,那就没有这个变量,就会报错

继承中构造方法的访问(子类的所有构造方法都会间接访问父类的无参构造方法):

子类继承父类,子类的所有的构造方法的第一句话:super() 都会默认的访问父类的无参方法 

如果父类中的无参构造方法没有,子类就会报错

解决方式:

 方式1:手动给出父类的无参构造方法

方式2:在子类的构造方法中的第一句话:通过super(xxx),间接的访问父类的有参构造方法

 方式3: 在子类的有参构造方法中通过 this() 来访问本类的无参构造方法,然后在子类的无参构造方法中间通过super(xxx)来访问父类的有参构造方法

4.this和super的区别

this:代表的当前类对象的地址值引用
super:代表的父类对象的地址值引用(代表父类的空间标识)
访问成员变量
this.变量名; 访问的本类中的成员变量
super.变量名; 访问的是父类的成员变量
访问构造方法:
this() ; 访问本类的无参构造方法
super() ;访问的父类的无参构造方法
this(xxx);访问的本类的有参构造方法
super(xxx);访问的父类的有参构造方法
成员方法:
this.方法名();访问的是本类的成员方法
super.方法名() ;访问的是父类的成员方法

5.方法重写(子类出现了和父类一模一样的方法声明)

区别方法重载:   在一个类中,提供n多个功能,这些功能,方法名相同,参数列表不同,与返回值无关(目的:提高某个功能的扩展性)

参数列表不同: 1)类型不同 2)个数不同3)先后顺序

注意:当前子类继承父类的时候,如果存在方法重写,子类重写父类该方法访问权限不能更低(要么一致,要么带上public)

方法重写的目的:子类有自己的功能,需要将父类的该功能覆盖掉

6.final 状态修饰符(不想让子类重写父类的功能)

特点:

1)可以修饰类,该类不能被继承

2)可以修饰符3)可以修饰的变量,这个变量此时是一个常量成员方法,成员方法不能重写 (自定义常量)

7.多态(一个事物在不同时刻的不同形态)

前提条件:1)存在继承关系2)存在方法重写3)父类引用指向子类对象   (格式: Fu fu  = new Zi() )

多态的成员访问特点:

1)针对成员变量的访问          编译看左,运行看左

2)针对多态中的成员方法(非静态)的访问           编译看左,运行看右

3)成员方法是静态方法的访问         编译看左,运行看左

4)构造方法         

存在继承关系: 需要让父类先初始化,再让子类进行数据初始化(分层初始化)

好处:1)提高代码的复用性:由继承保证

 2)提高了代码的扩展性:由多态保证 (重点)

多态的方式:使用向下转型(父类访问子类)

要使用向下转型,前提必须有父类引用指向子类对象 Fu f = new Zi() ;

遵循向下转型的格式:Zi z = (Zi)f;

向下转型使用不当会出现   java.lang.ClassCastException:类转换异常
 8.抽象类(将某个事物中的一些功能仅仅给出声明,没有方法体)(关键字abstract)

抽象类的格式:abstract  class 类名{}

抽象方法的格式: 权限修饰符(一般为public) abstract 返回值类型  方法名(形式参数列表)

特点:

1)有抽象方法的类一定是抽象类

2)抽象类中不一定只有抽象方法 ,还可以非抽象方法(有方法体)

3)抽象类不能实例化(创建对象)  (需要通过具体的子类进行实例化)

抽象多态的形式  Fu fu = new Zi()

注意:abstract和final,static,private关键字冲突

抽象类成员特点:

 成员变量
既可定义变量,也可定义常量:被final修饰
成员方法
既可定义为抽象方法,也可定义为非抽象方法
如果定义为抽象方法:关键字abstract(显示给出)
构造方法
存在无参构造/有参构造方法      目的:分层初始化

9.接口(就是体现一个现实世界事物所具有的的额外的扩展功能)

格式: interface  接口名{}

接口中的方法:隐藏public abstract关键字,只能是抽象方法,没有方法体

特点:

1)不能实例化(不能创建对象)

2)通过接口的子实现类(前提是具体类)进行实例化

接口的成员特点:

1)接口中的成员方法:只能是抽象方法,默认的修饰符:public abstract(可以省略)
2)接口没有构造方法
3)接口的成员变量只能是常量;存在默认修饰符:public static final (可以省略)

10.类和接口的关系: implements 实现关系

一个类继承另一个类的同时,可以实现多个接口,中间需用逗号隔开

接口与接口之间:            extends:继承关系

不仅支持单继承,也支持多继承

11.选择排序(使用0角标对应的元素依次和后面角标对应的元素进行比较,小的往前放,第一次比较完毕,最小值出现在最小索引处,依次这样比较)

for(int x = 0 ; x < arr.length-1 ; x ++){
            for(int y = x + 1 ;  y < arr.length ; y ++){
                if(arr[y] < arr[x]){
                    int temp = arr[x] ;
                    arr[x] = arr[y] ;
                    arr[y] = temp ;
                }
            }
        }

12.形式参数问题以及返回值问题:(引用类型)

1)方法的形式参数是类

具体类,调用该方法,实际参数需要传递当前具体类的对象

抽象类,调用该方法实际参数需要传递的抽象类的子类对象 (抽象类多态)

接口,调用该方式,实际参数需要传递的是当前接口的子实现类对象(接口多态)

2)方法的返回值是引用类型

具体类  :方法返回的就是当前具体类对象

抽象类 :需要返回的是抽象类的子类对象

接口:需要返回的是该接口的子实现类对象

13.权限修饰符

修饰的权限从小到大:私有修饰符private<默认修饰符<受保护的protected<public

14.内部类(在类A 中定义了类B,将类B就称为类A的内部类,而类A就是外部类)

注意:内部类可以访问外部类的成员,包括私有;如果当前成员内部类是静态的,  里面的方法无论是静态的还是非静态的,都只能访问外部类的静态成员,包括私有

1)外部类访问内部类的成员格式:

外部类名.内部类名  对象名 =  外部类对象.内部类对象;

2)访问静态成员内部类的成员格式(将静态的成员内部类看成是外部类的静态成员访问):

外部类名.内部类名 对象名 = new 外部类名.内部类名()

访问静态成员内部类的静态方法格式:

外部类名.内部类名.方法名

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值