恭喜你!学到这一步表示你已经是一个优秀的开发者。
抽象
关键字: abstract
抽象类:被abstract修饰的类就是抽象类。
抽象方法:被abstract修饰的方法就是抽象方法,抽象方法没有方法体,即没有大括号{}。
备注:
1、abstract不能和static一起使用。
2、abstract不能和private一起使用。
3、abstract不能和final一起使用。
4、抽象不能被实例化(不能创建对象),但是可以定义构造方法,该构造方法不是用于创建对象的,而是让子类继承父类使用的。
package com.wlx.day65;
/**
* 图形类
* 抽象类
*/
public abstract class Graph
{
/**
* 图形面积方法
* 抽象方法
*/
public abstract void area();
/**
* 图形周长方法
* 抽象方法
*/
public abstract void perimeter();
}
package com.wlx.day65;
/**
* 正方形类
*/
public class Square extends Graph
{
//定义正方形的边
int b;
/**
* 正方形面积
*/
@Override
public void area()
{
System.out.println("边长是3的正方形面积是:"+(b*b)+"CM");
}
/**
* 正方形周长
*/
@Override
public void perimeter()
{
System.out.println("边长是3的正方形周长是:"+(b*4)+"CM");
}
public static void main(String[] args) {
Square square = new Square();
square.b = 6;
square.area();
square.perimeter();
}
}
final关键字
被final修饰的变量称为常量,一旦定义和初始化后,不能改变值的变量称为常量。
被final修饰的方法不能被重写。
被final修饰的类不能被继承。
常量分为:
静态常量: 被static final修饰的常量就是静态常量,建议静态常量定义立刻初始化,否则只能在静态代码块中初始化,也仅有这一次初始化。
实例常量: 被final修饰的常量就是实例常量,实例常量可以通过三种方式初始化:
1、定义时立刻初始化
2、构造方法中初始化
3、实例代码块中初始化
package com.wlx.day65;
public final class FinalDemo
{
//定义一个int类型的变量a
int a;
//定义一个int类型的实例常量b
final int b;
//定义一个int类型的静态常量c,并被static修饰
final static int c = 123;
//定义一个静态代码块
static
{
//c = 123;
System.out.println("static------");
}
//非静态代码块---实例代码块
{
b = 123;
System.out.println("实例------");
}
public final void hello()
{
}
public static void haha()
{
}
/*public FinalDemo(int b)
{
this.b = b;
}*/
public static void main(String[] args) {
// new FinalDemo(1);
final FinalDemo fd;
fd = new FinalDemo();
}
}
代码块
代码块分为:静态代码块和非静态代码块。
静态代码块格式:
static
{
}
实例代码块格式:
{
}
接口
关键字: interface
格式:
访问权限修饰符 interface 接口名
{
}
类实现接口格式:
public class 实现类名 implements 接口名1,…,接口名N
{
类体
}
备注:
1、接口中的抽象法不用显式使用public abstractor修饰,默认被public abstractor修饰。
2、接口中的全局变量都是静态常量,即默认情况下被public static final修饰。
3、接口中不能定义所有代码块。
4、接口中没有构造方法。
5、接口中可以定义静态方法。
6、接口中不能定义public权限的非静态方法,但可以定义default权限的非静态方法。
package com.wlx.day65;
/**
* 图形接口
*/
public interface GraphInterface
{
//接口中的全局变量都是公共的静态常量
int a = 123;
public static final String s = "";
/**
* 图形面积方法
* 抽象方法
*/
void area();
/**
* 图形周长方法
* 抽象方法
*/
void perimeter();
//此处编译出错,接口中没有任何代码块
/*static
{
}*/
//此处编译出错,接口中没有构造方法
/*GraphInterface()
{
}*/
/**
* 定义静态方法
*/
public static void hello()
{
}
/**
* 定义default默认权限的非静态方法
*/
default void world()
{
}
}
接口多继承
此处省略父接口。
package com.wlx.day65;
/**
* 接口的多继承
*/
public interface SquareInterface extends SuperSquareInterface,GraphInterface
{
//该子接口中包含所有父接口中的方法,即继承了所有父接口中的方法
}
实现多个接口
package com.wlx.day65;
/**
* 类实现接口
*/
public class SquareImpl implements SquareInterface,GraphInterface
{
@Override
public void area() {
}
@Override
public void perimeter() {
}
@Override
public void tiJi() {
}
}