Java中的一些疑难困惑点(一)

java中@Override的作用
**哈哈先给个不错的博客链接----海涛zht666-------https://blog.csdn.net/zht666/article/details/73294360
@Override是伪代码表示重写(当然可以不写),不过写上有如下好处
1.可以当注释用,方便阅读
2.编译器可以给你验证@Override下面的方法名是否是你父类中所有的,如果没有则报错。例如:你如果没有写@Override,而你下面的方法名又写错了,这时编译可以通过编译器会认为这个方法是你的子类自己增加的方法。

java中this和super的区别
super()函数在子类构造函数中调用父类的构造函数时使用,而且必须要在构造函数的第一行。定义仔类的一个对象后,先调用仔类构造函数,再调用父类,一直调用到最终的父类,函数调用使用栈空间,最后栈顶为最终父类。构造函数执行是按照栈顶到栈底的顺序依次执行。
this()函数主要应用于同一个类中从某个构造函数调用另一个重载版的构造函数,同一类的不同构造函数中使用,super()主要是在继承了父类的仔类的构造函数中调用。

Java中打jar包的方法
在我们实际编程的过程中,为了避免类名之间发生冲突,从而引进了包机制。打包方法:
1.说一种良好的编程习惯,在我们编程过程中,应该建立两个文件夹,分别是sources和classes文件夹,其中sources文件夹用于存放源代码文件,classes用于存放.class文件,在软件发布时,不需要将源码一起发布出去,只需要将.class
文件达成jar包之后发布。
具体内容看链接----https://blog.csdn.net/jpzhu16/article/details/50885012
----把一个java程序打成jar包-------https://blog.csdn.net/qq_38571398/article/details/78883623
静态方法于非静态方法的区别
静态方法是在类中使用static修饰的方法,在类定义的时候已经被装载和分配。而非静态方法是不加static关键字的方法,在类定义时没有占用内存,只有类被实例化成对象时,对象调用该方法才被分配内存。
其次,静态方法中只能调用静态成员或静态方法,不能调用非静态方法或者非静态成员。

class Test{
		public int sum(int a,int b){//非静态方法
			return a+b;
			}
			public static void main(String[] args){
				int result = sum(1,2)'//静态方法调用非静态方法
			System.out.println("result" + result);
			}
		}

上面的代码会显示错误,解决的方法有以下几种
1.静态方法只能访问静态方法和静态成员
public static int sum(int a,int b)
2.非静态方法要被实例化才能被静态方法调用
Test Test = new Test();

JAVA中this的四种用法的详解------https://blog.csdn.net/HD243608836/article/details/80827522
this关键字必须放在非静态方法里面
*使用this关键字引用成员变量
*使用this关键字在自身构造方法内部引用其他构造方法
*使用this关键字代表自身类的对象
*使用this关键字引用成员方法

/********************使用this引用成员变量*********************/
public class ReferenceVariable{
	private int a;
public ReferenceVariable(int a){
	this.a=a;
	}
public int getA(){
	return a;
	}
public void setA(int a){
	this.a = a;
	}
}
/*************在改代码的构造方法和setA方法内部,都是用this.a引用类的成员变量。因为无论在构造方法还是setA方法内部,都包含2个变量名为a的变量,一个是参数a,另外一个是成员变量a。参数a的作用范围为构造方法或方法内部,成员变量a的作用范围是类内部,这样变量a就起冲突,作用域小的变量覆盖作用域大的变量,这样需要访问成员变量a则必须使用this进行引用,如果变量名不发生重叠,则this可以省略。

/******************@author:huangenda**********************/
package test;

public class ThisTest{
	prinvate int i = 0;
	//第一个构造器:有一个int型参数
	ThisTest(int i){
		this.i=i+1;//此时this表示引用成员变量i,而非函数参数i
		System.out.println("Int coonstructor i--this.i:

java里面interface,implement和extends的作用和用法
extends可以理解为全盘继承父类的功能
implements可以理解为为这个类附加一些额外的功能

**interfaces是定义接口的关键字,所谓的接口说白了就是一个规则,用电脑的USB插口打个比方
public interface USB接口{
这个接口只能插标准USB接口();/所谓接口中的方法就是定义了一个规范,而我这个标准USB接口中要插鼠标还是U盘,那么就是在你实现的类中根据具体情况来看了/
而implement就是实现接口的关键字,你要是实现了一个接口,那就是必须实现里边的方法,按照上边的例子说
public class 类名 implenment USB接口{
//现在就要具体实现刚才接口中定义的方法了,
接口中的方法(){
我这个接口是插鼠标的;
}
就是在你的类的原先的基础上又引进了别的方法,好比电脑引进一个USB接口可以插鼠标,插音信爱国,是拓展功能
extendes是继承的关键字,是子类继承父类的功能和属性。,电脑是父类,笔记本是子类,一个类可以有多个子类,但是一个类只能有一个直接父类。
interface和extends的区别:
interface实现接口必须实现接口中的全部方法
extends是继承了父类的属性和方法,但是可能永远都用不上。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值