class Cat {
public void eat() {
System.out.println("猫吃鱼");
}
}
class CatOperator {
public void useCat(Cat cat) {
cat.eat();
}
public Cat getCat() {
Cat cat = new Cat();
return cat;
}
}
public class Demo {
public static void main(String[] args) {
//创建操作类对象,并调用方法
CatOperator co = new CatOperator();
Cat cat = new Cat();
co.useCat(cat);
Cat cat1 = co.getCat();
cat1.eat();
}
}
- 方法的形参是抽象类名 , 其实需要的是该抽象类的子类对象
- 方法的返回值是抽象类名, 其实返回的是该抽象类的子类对象
abstract class Animal {
public abstract void eat();
}
class Cat extends Animal {
@Override
public void eat() {
System.out.println("猫吃鱼");
}
}
class AnimalOperator {
public void useAnimal(Animal animal) {
animal.eat();
}
public Animal getAnimal() {
Animal animal = new Cat();
return animal;
}
}
public class Demo {
public static void main(String[] args) {
//创建操作类对象,并调用方法
AnimalOperator ao = new AnimalOperator();
Animal animal = new Cat();
ao.useAnimal(animal);
Animal animal1 = ao.getAnimal();
animal1.eat();
}
}
interface Eat {
void eat();
}
class EatOperator {
public void startEat(Eat eat) {
eat.eat();
}
public Eat getEat(){
Eat eat = new Cat();
return eat;
}
}
class Cat implements Eat{
@Override
public void eat() {
System.out.println("猫开始干饭了");
}
}
public class Demo {
public static void main(String[] args) {
//创建操作类对象,并调用方法
EatOperator eatOperator = new EatOperator();
Eat eat = new Cat();
eatOperator.startEat(eat);
Eat eat1 = eatOperator.getEat();
eat1.eat();
}
}
格式:
class 外部类名{
修饰符 class 内部类名{
}
}
举例:
class Outer {
public class Inner {
}
}
public class Outer {
private int num = 10;
public class Inner {
public void show() {
System.out.println(num);
}
}
public void method() {
Inner i = new Inner();
i.show();
}
}
Outer.Inner oi = new Outer().new Inner();
class Outer {
private int num = 10;
private class Inner {
public void show() {
System.out.println(num);
}
}
public void method() {
Inner inner = new Inner();
inner.show();
}
}
public class Demo {
public static void main(String[] args) {
//Ineer 被 private 修饰
//Outer.Inner oi = new Outer().new Inner();
//oi.show();
Outer outer = new Outer();
outer.method();
}
}
格式:new 类名 ( ) { 重写方法 } new 接口名 ( ) { 重写方法 }
举例:
new Inter(){
@Override
public void method(){}
}
本质:是一个继承了该类或者实现了该接口的子类匿名对象
Inter i = new Inter(){
@Override
public void method(){
}
}
interface Inter{
void method();
}
class Demo{
public static void main(String[] args){
new Inter(){
@Override
public void method(){
System.out.println("我是匿名内部类");
}
}.method(); // 直接调用方法
}
}
当发现某个方法需要,接口或抽象类的子类对象,我们就可以传递一个匿名内部类过去,来简化传统的代码
类名.进行调用
方法名 | 说明 |
---|---|
public static int abs(int a) | 返回参数的绝对值 |
public static double ceil(double a) | 返回大于或等于参数的最小double值,等于一个整数 |
public static double floor(double a) | 返回小于或等于参数的最大double值,等于一个整数 |
public static int round(float a) | 按照四舍五入返回最接近参数的int |
public static int max(int a,int b) | 返回两个int值中的较大值 |
public static int min(int a,int b) | 返回两个int值中的较小值 |
public static double pow (double a,doubleb) | 返回a的b次幂的值 |
public static double random() | 返回值为double的正值,[0.0,1.0) |
方法名 | 说明 |
---|---|
public static void exit(int status) | 终止当前运行的 Java 虚拟机,非零表示异常终止 |
public static long currentTimeMillis() | 返回当前时间(以毫秒为单位 |
方法名 | 说明 |
---|---|
public static String toString(int[] a) | 返回指定数组的内容的字符串表示形式 |
public static void sort(int[] a) | 按照数字顺序排列指定的数组 |