2021-1-22
1. Polymorphism overview
package com.wc.test;
/**
* @author wc
* @Date: 2021/01/23/9:06
*/
public class Test {
public static void main(String[] args) {
Animal a=new Cat();
a.eat();
}
}
class Animal{
public void eat(){
System.out.println("动物吃饭");
}
}
class Cat extends Animal{
@Override
public void eat(){
System.out.println("猫吃鱼");
}
}
2. Features of polymorphic member access
3. Transformation in polymorphism
4. Multi-station forced transfer risks and solutions
package com.wc.test;
/**
* @author wc
* @Date: 2021/01/23/9:06
*/
public class Test {
public static void main(String[] args) {
useAnimal(new Cat());
useAnimal(new Dog());
}
private static void useAnimal(Animal a) {
a.eat();
//狗中的特有方法想要调用可以通过强转,强转风险
//变量不能确定,通过instanceof关键字进行判断
if (a instanceof Dog) {
Dog dog = (Dog) a;
dog.drink();
}
}
}
abstract class Animal {
//抽象方法,不知道执行的谁的吃
public abstract void eat();
}
class Cat extends Animal {
@Override
public void eat() {
System.out.println("猫吃鱼");
}
}
class Dog extends Animal {
@Override
public void eat() {
System.out.println("狗吃肉");
}
public void drink() {
System.out.println("狗喝水");
}
}
5. Member inner class (understand)
1. Private member inner class
2. Static member inner class
6. Local inner class (understand)
7. Anonymous inner class
8. The use of Lanbda expressions
Case study
package com.wc.show;
/**
* @author wc
* @Date: 2021/01/23/17:37
*/
public class ShowHandler {
public static void main(String[] args) {
ShowHandlerDemo(new ShowHandlerMethod() {
@Override
public void show() {
System.out.println("展示");
}
});
ShowHandlerDemo(()->{
System.out.println("展示");
});
}
public static void ShowHandlerDemo(ShowHandlerMethod showHandlerMethod) {
showHandlerMethod.show();
}
}
interface ShowHandlerMethod {
void show();
}
Case study
package com.wc.show;
/**
* @author wc
* @Date: 2021/01/23/17:58
*/
public class CalculatorDemo {
public static void main(String[] args) {
useCalculator(new Calculator() {
@Override
public int calc(int a, int b) {
return a + b;
}
});
useCalculator((int a, int b)->{
return a+b;
});
}
public static void useCalculator(Calculator calculator) {
int result = calculator.calc(2, 3);
System.out.println(result);
}
}
interface Calculator {
int calc(int a, int b);
}