java部分关键字总结

2019-02-28  本文已影响0人  朱朱今天撸代码了吗

abstract

抽象,用于定义抽象类,抽象函数。

抽象类是为了把相同的但不确定的东西的提取出来,为了以后的重用。定义成抽象类的目的,就是为了在子类中实现抽象类。

用法规则:

用法示例:

 abstract int add(int x,int y);
 int sub(int x,int y) { 
 return x-y;
 }
}
class B extends A {
 int add(int x,int y) {   //子类必须重写父类的add方法
 return x+y;
 }
}
public class Example5_12 {
 public static void main(String args[]) {
 B b=new B();
 int sum=b.add(30,20);            //调用子类重写的add方法
 int sub=b.sub(30,20);            //调用子类继承的sub方法
 System.out.println("sum="+sum);  //输出结果为sum=50
 System.out.println("sum="+sub);  //输出结果为sum=10
 A a;                             //抽象类声明对象
 a = b;                           //a是b的上转型对象
 sum=a.add(30,20);                //调用子类重写的方法
 sub=a.sub(30,20);                //调用子类继承的方法
 System.out.println("sum="+sum);  //输出结果为sum=50
 System.out.println("sum="+sub);  //输出结果为sum=10
 }
}

interface

接口,用于声明新的java接口,接口是方法的集合.接口就是用来被继承,被实现的,修饰符一般用public

用法规则:

用法示例:

[修饰符] (abstract) interface 接口名[extends 父接口1,父接口2...]  //接口可继承多个父接口(即:接口是多继承的);abstract若没写,系统会自动加上
{
0个到多个常量定义...
0个到多个抽象方法的定义...
}
​
//定义一个接口Output 
 interface Output 
{ 
 //接口里只能把属性定义成常量 
 int MAX_CACHE_LINE = 50;//主要是定义存储空间 
 //接口里定义的只能是public的抽象方法 
 void out(); 
 void getData(String msg);
} 
//定义一个接口Product 
interface Product 
{ 
 int getProduceTime(int a); 
} 

//让printer类实现定义的接口 
public class Printer implements Output,Product 
{ 
 private String [] printData = new String[MAX_CACHE_LINE]; 
 private int dataNum =0; 
 public void out()//重写父接口Output的方法 
 { 
 while(dataNum>0) 
 { 
 System.out.println("打印机打印"+printData[0]); 
 System.arraycopy(printData,1,printData,0,--dataNum); 
 } 
 } 
 public void getData(String msg)//重写父接口Output的方法 
 { 
 if(dataNum>=MAX_CACHE_LINE) 
 { 
 System.out.println("已满"); 
 } 
 else 
 { 
 printData[dataNum++] = msg; 
 } 
 } 
 public int getProduceTime(int a)//重写父接口Product的方法 
 { 
 return a = a; 
 } 
 public static void main(String[] args) 
 { 
 //父接口可声明变量,但是不能创建实例,多态:声明的是Output,但是创建的实例是Printer 
 Output O= new Printer(); 
 O.getData("xiuxiu"); 
 O.out();//直接调用输出的方法 

 //父接口可声明变量,但是不能创建实例,多态:声明的是Output,但是创建的实例是Printer 
 Product p = new Printer(); 
 System.out.println(p.getProduceTime(82)); 

 //所有接口类型的引用变量都可以直接赋值给Object类型的变量 
 Object obj = p; 
 Object obj1 = O; 

 } 

}

接口和抽象类的异同

相同:

1、都有抽象方法。

2、都不能创建实例。

3、子类继承其后都必须全部实现其内的抽象方法,如果没有全部实现的话,类只能定义成抽象类。

不同:

1、接口里只能有抽象方法,抽象类里可以有普通方法。(1.8之后不是了)

2、接口类里的属性默认有修饰语public static final,但是抽象类中的属性可以是普通的。

3、接口没有初始化块,抽象类里有。

4、接口可以有多个父接口,但是抽象类只能有一个父类。

final

用法规则

用于变量、方法、类。

用法示例

class Person{
 public final String getName(){
 return "personal loan"
 }
}

class loan extends Person{
 @Override
 public final Stirng getName(){
 return "cheap personal loan";//compilation error: overridden method is final
 }
}

使用final的好处:

static

在《Java编程思想》P86页有这样一段话:

“static方法就是没有this的方法。在static方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。这实际上正是static方法的主要用途。”

用于定义静态成员变量或方法,也就是成为附属于类的变量或方法。因此可以从类外部直接调用,而不用先实例化该类。类的成员变量在类的所有实例中只存在一个。

一句话就是方便在没有创建对象的情况下来进行调用(方法/变量)。

用法规则

用法示例

public class Test extends Base{

 static{
 System.out.println("test static");
 }

 public Test(){
 System.out.println("test constructor");
 }

 public static void main(String[] args) {
 new Test();
 }
}

class Base{

 static{
 System.out.println("base static");
 }

 public Base(){
 System.out.println("base constructor");
 }
}
输出结果:
base static
test static
base constructor
test constructor

this

this关键字用于引用类的当前实例。

用法规则

用法示例

class Manager {
 Employees[] employees;

 void manageEmployees() {
 int totalEmp = this.employees.length;
 System.out.println("Total employees: " + totalEmp);
 this.report();
 }

 void report() { }
}

super

super关键字用于从子类访问父类的变量和方法。

用法规则:

用法示例:

public class Super {
 protected int number;

 protected showNumber() {
 System.out.println("number = " + number);
 }
}

public class Sub extends Super {
 void bar() {
 super.number = 10;
 super.showNumber();
 }
}

synchronized

(待补充)

volatile

(待补充)

参考文章:

https://www.cnblogs.com/yihujiu/p/5990622.html

https://blog.csdn.net/rain722/article/details/78929943

https://www.cnblogs.com/chihirotan/p/6044056.html

https://www.cnblogs.com/dolphin0520/p/3799052.html

上一篇下一篇

猜你喜欢

热点阅读