172.16.0.67_内部类匿名类
内部类
内部类是将一个类定义在另外一个类的内部,被定义在内部的类称为内部类。包含内部类的类称为外部类。
例如:
class DBHelper{//外部类
class RowMapper0{//内部类
}
class RowMapper1{
}
}
为什么使用内部类呢?
如果一个类只在另外一个类的内部使用,不会再其他的地方使用,就可以定位内部类。
如何创建内部类的对象?
创建实例内部类对象
class DBHelper{//外部类
class RowMapper0{//内部类
void mapper() {
}
}
static class RowMapper1{
}
public static void main(String[] args) {
DBHelper db = new DBHelper() ;
RowMapper0 r1 = db.new RowMapper0();//创建实例内部类RowMapper0对象
r1.mapper();
}
}
创建静态内部类对象
class DBHelper{//外部类
class RowMapper0{//内部类
void mapper() {
}
}
static class RowMapper1{
void mapper() {
}
}
public static void main(String[] args) {
//创建实例内部类RowMapper1对象
RowMapper1 r1 = new DBHelper.RowMapper1();
r1.mapper();
}
}
匿名类
匿名类是指没有名称的类
表现形式为
(1)new 接口名(){
方法实现(){
}
};
(2)new 抽象类(){
方法实现(){
}
}
例如:
interface Factory{
void service();
}
class Test{
public static void main(String[] args) {
Factory f = new Factory() {
public void service() {
System.out.println("service");
}
};
f.service();
}
}
一般情况下,匿名类都是在只使用一次对象的情况下使用。
课后作业1
public abstract class Area {
public abstract double getArea();
}
public class RectArea extends Area{
private double length,width;
public RectArea(double length,double width){
this.length=length;
this.width=width;
}
public double getArea(){
return length*width;
}
}
public class RoundArea extends Area{
static final double PAI=3.14;
private double r;
public RoundArea(Double r){
this.r=r;
}
public double getArea(){
return PAI*r;
}
}
import java.util.Scanner;
public class Test{
public static void main(String[] args) {
Area area=null;
System.out.println("请选择要计算的图形:1、圆 ; 2、长方形");
Scanner input=new Scanner(System.in);
int choose=input.nextInt();
if (choose==1) {
System.out.println("请输入半径:");
double r=input.nextDouble();
//父类引用指向子类对象
area=new RoundArea(r);
System.out.println("圆形的面积是:" + area.getArea());
} else if (choose==2) {
System.out.println("请输入长:");
double length=input.nextDouble();
System.out.println("请输入宽:");
double width=input.nextDouble();
//父类引用指向子类对象
area=new RectArea(length, width);
System.out.println("长方形的面积是:" + area.getArea());
}
}
}
课后作业2
public class DotMatrixtPrinter extends Printer{
public void print(){
System.out.println("这是针式打印机");
}
}
public class InkpetPrinter extends Printer{
public void print(){
System.out.println("这是喷墨打印机");
}
}
public class LaserPrinter extends Printer{
public void print(){
System.out.println("这是激光打印机");
}
}
public abstract class Printer {
public abstract void print();
}
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
System.out.println("请输入要打印的打印机:1、针式;2、喷墨;3、激光");
Scanner input = new Scanner(System.in);
int choose = input.nextInt();
switch (choose){
case 1:
Printer d=new DotMatrixtPrinter();
d.print();
break;
case 2:
Printer i=new InkpetPrinter();
i.print();
break;
case 3:
Printer l=new LaserPrinter();
l.print();
break;
}
}
}
评论留言