一、abstract
用法:
1、用来修饰类和方法,被abstract修饰的类/方法是抽象类/抽象方法,抽象类不能被实例化,抽象方法没有方法体;
2、如果一个类里面有抽象方法,那么这个类必须被声明成抽象类;反之,一个抽象类中的方法可以全普、全抽、半普半抽;抽象类中可以定义成员变量、常量;
3、如果一个类继承了一个抽象父类,两种解决方案:
方案一:实现抽象父类的全部抽象方法,成为普通类
方案二:不实现/实现部分父类的抽象方法,继续抽象
4、抽象类有构造方法吗?如果有那么抽象类为什么不能被实例化?
答:抽象类中有构造方法,构造方法不是为了自己实例化用的,而是为了子类实例化,因为继承关系中,子类的构造函数默认存在super(),默认调用父类的构造函数;
tips:那么继承关系中,子类会继承父类的构造函数吗?答:不会,构造函数概念:与本类类名同名且没有返回值类型。
5、如果一个类不想被实例化,可以把这个类声明成抽象类。
6、话不多说,直接上代码;
package cn.tedu;
/**本类用于复习抽象类*/
public class ReviewAbstract {
public static void main(String[] args) {
a a = new b();
a.play();
b b = new b();
System.out.println(b.s);
}
}
abstract class a{
int num = 10;
final String s = "自信至上";
abstract public void play();
public void eat(){
System.out.println("抽象类中的普通方法");
}
}
//子类继承父类后实现父类的抽象方法
class b extends a{
@Override
public void play() {
System.out.println("实现后的抽象方法");
}
}
//子类继承父类后声明成抽象类
abstract class c extends a{
}
二、private
之前复习过:
三、final
用法:
1、被final修饰的类不能被继承;
2、被final修饰的方法不能被重写;
3、被final修饰的变量为常量,值不能被修改
四、static
用法:
1、被static修饰的资源称为静态资源;
2、静态资源在内存中只有一份,会被全局所有的对象共享;
3、静态资源随着类的加载而加载到内存中,比对象先进入内存,所以静态资源可以不通过对象调用,通过类名直接调用;
4、静态资源的调用关系:静态调用静态、普通调用静态。
5、java static关键字的作用是什么? 在java中,static是一个修饰符,用于修饰类的成员方法、类的成员变量,另外可以编写static代码块来优化程序性能;被static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访问。
6、上代码:
package cn.tedu;
/**本类用于复习static关键字*/
public class ReviewStatic {
public static void main(String[] args) {
//调用非静态资源需要创建对象
animal animal = new animal();
System.out.println(animal.s);
//调用静态资源直接通过类名调用
animal.get();
}
}
class animal{
static int a = 10;
String s = "hello";
public static void get(){
System.out.println();
}
}