Java教程

Java学习博客第二篇

本文主要是介绍Java学习博客第二篇,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

接口

理解:接口是一套公共的规范标准
public:修饰的方法–>该方法可以被跨包访问
protected:修饰的方法–>该方法可以被子类访问
private:修饰的方法–>该方法只能被其所在类中的其他方法访问

接口的定义格式

public interface	接口名{
	//1.定义抽象方法:默认被public abstract修饰  【可以省略public abstract】
	//2.定义默认方法:需要被public和 default(是关键词要写出来和抽象类中的普通方法一样只是通过default关键字做标记) 			  【可以省略public】
	//3.定义静态方法:需要被public和static修饰	  【直接接口名调用】
	//4.定义私有方法:被private修饰的方法			  【只能在本接口中使用】
	//5.定义常量:		  默认被public static final修饰【public static final可以省略】
}

接口的实现:

public class 类名 implements 接口名{
	//1.接口中的抽象方法:必须在其实现类中被重写(复写)
	//2.接口中的默认方法:可选复写(可写可不写)
}

接口的使用:

1.接口不能直接使用,必须有个【实现类】来【实现】该接口

2.接口的实现类必须覆盖重写(实现)接口中的所有抽象方法。

3.创建实现类的对象,进行使用。

接口和抽象类的比较:

在这里插入图片描述

抽象类与接口对比的图解:

在这里插入图片描述

类与类、类与接口、接口与接口

类与类:单一的继承关系(抽象类也是这样)–>儿子只能有一个亲爹
类与接口:多实现关系 -->儿子可以有多个干爹
接口与接口:多继承关系
抽象类和普通父类都是属于类的概念,只能被单继承,二者不能被同时继承,但是可以分别和接口一同实现–>子类可以继承父类(或抽象类)同时还可以实现接口
接口和抽象类都不能直接被创建对象所以没有构造器

接口与抽象类的使用

抽象类:抽取子类的共性内容–>(和子类的关系是纵向的)
接口:给类做功能扩展–>(和实现类(类似于子类为了区分才叫实现类以及用implements关键字修饰)的关系是横向的)
接口和抽象类是一种互补关系,在开发中根据实际需求合理运用

抽象类中抽象方法的定义方式:

public abstract 返回值类型 方法名称(参数列表);

注意:
1、接口当中的抽象方法,修饰符必须是两个固定的关键字:public abstract

多态

理解:
一个对象有多种数据类型;
多态体现的就是一种子类和父类的可以灵活转换关系,所以多态的实现要基于继承;
多态就是去调用子类的重写的方法(不是变量)体现不同的结果这就是多态。

多态的特性使得方法的调用变得更加灵活,这也是面向对象概念(面向对象的程序设计思想)的核心体现
这么做的核心目的:
就是为了简化代码,提高程序的复用性,性能,效率,可维护性

实现多态的前提:

1、类与类之间存在子-父类关系
2、子类中重写父类的方法
3、父类接收子类的对象

多态成员的访问特点:

1、成员变量:只看父类,父类没有就报错
2、成员方法:如果子类中有方法的重写,就优先执行子类的重写的方法,否则就看父类,父类有就执行,父类没有就报错

小结:有方法的重写才执行子类,没有重写都执行父类

多态的好处:

把父类/接口,作为方法的参数,调用方法的时候可以传递任意的子类/实现类的对象。

小记:

1、工具类里的方法都是静态方法,只含静态方法的类就是工具类;
2、被static关键字修饰的方法不能有this关键字,存在先后关系——因为static修饰的方法是类的方法可以被该类的所有对象调用,随着类被加载而被加载,this关键字是属于对象的,哪个对象调用这个方法,那么这个方法就是属于被这个对象调用
3、成员变量不能被覆盖重写,只有方法才可以
4、Java中的任何一个类(包括自定义的类),默认extends Object,直接或间接是Object类的子类,(object类是根类)
5、常量池中常量的存储也是基于数组实现的
6、接口也可以作为多态体现

方法的重写和方法的重载比较:

1、方法的重写也就是子类重写了父类中的方法(纵向关系)
2、方法的重载就是同一类中同名,而参数列表不同的方法(横向关系)
(方法之间的是否重载,只看方法名是否相同参数列表是否不同–>有无参数,参数个数,参数类型)
与方法的返回值类型,或权限修饰符无关

访问成员变量的两种方式:

1、直接通过对象名称访问成员变量:看等号左边是谁,优先用谁,没有则向上找。
2、间接通过成员方法访问成员变量:看该方法属于谁,优先用谁,没有则向上找。

final关键字

final(最终的):可以修饰类、方法、变量

1、final关键字用来修饰一个类–>表明该类没有子类(或者不能用final修饰的类作为父类)所以其中的所有方法都不能被重写,当然在final修饰的类中可以重写其父类的方法;
2、final修饰方法–>该方法不能被重写;
final和abstract不能共存(final修饰的方法是不能被重写,而abstract修饰的方法必须要被重写,所以二者冲突)

当final关键字用来修饰一个方法时,这个方法不能被覆盖重写。

修饰符 final 返回值类型 方法名称(参数列表){
	//方法体
}
注意:
对于类,方法来说,abstract和final不能同时使用。

final修饰变量
1).final修饰局部变量:被final修饰的变量,只能被赋值一次,不可再被更改
final int num = 10;//num的值固定为10,不能被再次更改
修饰引用变量–>其存储的指向对象的地址不可更改,但对象里面的属性可(成员变量)以更改。

2).final修饰成员变量:成员变量都有默认的值,但是被final关键字修饰的成员变量,没有默认值,必须手动赋值:
1、直接使用=赋值
2、没有直接赋值,可以在构造方法中赋值。

对于成员变量来说,如果用final修饰,这个变量也不可变。

1、由于成员变量具有默认值,所以用了final之后必须手动赋值,不会再给默认值。

2、对于final的成员变量,要么使用直接赋值,要么通过构造方法赋值。二选一

3、必须保证类当中所有重载的构造方法,都最终会对
final的成员变量赋值。

这篇关于Java学习博客第二篇的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!