Test1
package com.nchien.demo1;
/**
* 动物类
*/
public class Animal {
public String name = "dongwu";
public void eat(){
System.out.println("chi");
}
}
package com.nchien.demo1;
public class Cat extends Animal{
public String name = "mao";
public String age = "10";
@Override
public void eat() {
System.out.println("chi yu ");
}
public void jump(){
System.out.println("hui tiao");
}
}
package com.nchien.demo1;
public class Dog extends Animal{
public void jump(){
System.out.println("buhuipao");
}
}
package com.nchien.demo1;
public class AnimalTest {
public static void main(String[] args) {
// Cat cat = new Cat();
//多态 父类的对象存储子类
Animal animal = new Cat();
//多态访问 成员属性 的时候
//编译器 编译时 根据 等号左边的类 来 界定对象的类型
//在访问的时候 也是根据等号左边的类型 来 访问相应的成员变量
//编译看左 运行看左
System.out.println(animal.name);
//多态访问 成员方法 的时候
//编译器 编译时 根据 等号左边的类 来 界定对象的类型
//运行成员方法的时候 是根据等号右边实例化 的 对象 来访问相应的 成员方法
//编译看左 运行看右
animal.eat();
System.out.println("===================");
//向下转型
System.out.println(animal instanceof Cat);
((Cat)animal).jump();
if (animal instanceof Dog){ //在做向下转向之前,先判断转型的类型是否合法
((Dog)animal).jump();// ClassCastException 类型转换异常
}
}
}
Test2
package com.nchien.demo2;
/**
* USB接口类
*/
public abstract class Usb {
public abstract void on();
public abstract void off();
}
package com.nchien.demo2;
import org.w3c.dom.ls.LSOutput;
public class Mouse extends Usb{
@Override
public void on() {
System.out.println("鼠标的usb被插入");
}
@Override
public void off() {
System.out.println("鼠标的usb被移除");
}
public void left(){
System.out.println("左被点击");
}
public void right(){
System.out.println("右被点击了");
}
public void doubleClick(){
System.out.println("被双击了");
}
}
package com.nchien.demo2;
public class KeyBoard extends Usb{
@Override
public void on() {
System.out.println("键盘的usb被插入了");
}
@Override
public void off() {
System.out.println("键盘的usb被移除了");
}
public void inPutting(){
System.out.println("键盘正在输入");
}
}
package com.nchien.demo2;
public class Computer{
public void open(){
System.out.println("计算机开机");
}
public void close(){
System.out.println("计算机关机");
}
/**
* 使用usb设备
* @param dev 要使用的usb设备
*/
public void useDevice(Usb dev){
dev.on();
if (dev instanceof Mouse){
((Mouse)dev).left();
((Mouse)dev).right();
((Mouse)dev).doubleClick();
} else if (dev instanceof KeyBoard) {
((KeyBoard)dev).inPutting();
}
dev.off();
}
}
package com.nchien.demo2;
public class RunTest {
public static void main(String[] args) {
Computer computer = new Computer();
computer.open();//开机
computer.useDevice(new Mouse()); //使用鼠标
computer.useDevice(new KeyBoard());
computer.close();//关机
}
}
Test3
package com.nchien.demo3;
public interface Usb {
void on();
void off();
}
package com.nchien.demo3;
public class Mouse implements Usb{
@Override
public void on() {
System.out.println("鼠标的usb已插入");
}
@Override
public void off() {
System.out.println("鼠标的接口被弹出");
}
public void leftClick(){
System.out.println("鼠标左键点击");
}
void rightClick(){
System.out.println("鼠标右键点击");
}
void doubleClick(){
System.out.println("双击");
}
}
package com.nchien.demo3;
public class KeyBoard implements Usb {
@Override
public void on() {
System.out.println("键盘接口已插入");
}
@Override
public void off() {
System.out.println("键盘接口被弹出");
}
void inPutting(){
System.out.println("正在输入");
}
}
package com.nchien.demo3;
public class Computer {
public void open(){
System.out.println("开机");
}
void off(){
System.out.println("关机");
}
public void usbDev(Usb dev){
dev.on();
if (dev instanceof Mouse){
((Mouse) dev).leftClick();
((Mouse) dev).rightClick();
((Mouse) dev).doubleClick();
}
else if( dev instanceof KeyBoard){
((KeyBoard) dev).inPutting();
}
dev.off();
}
}
package com.nchien.demo3;
public class demo3Test {
public static void main(String[] args) {
Computer computer = new Computer();
computer.open();
Mouse mouse = new Mouse();
KeyBoard keyBoard = new KeyBoard();
computer.usbDev(mouse);
computer.usbDev(keyBoard);
computer.off();
}
}
Test4
package com.nchien.demo1;
public class Demo1Test {
private String strOut = "我是外部类当中声明的私有成员属性";
private void methodOut(){
System.out.println("我是外部类中的私有成员方法");
}
public class Inner{
public String strInner = "我是内部类中声明的公有成员属性";
public void methodInner(){
System.out.println("我是内部类中的成员方法");
}
}
public static void main(String[] args) {
// Inner inner = new Inner();
// System.out.println(inner.strInner);
}
}
Test5
package com.nchien.demo2;
public class Demo2 {
private String strOut = "外部变量";
public class Inner{
public void show(){
System.out.println(strOut + "我是内部 方法 调用的外部变量"); //内部方法 调用外部变量
}
}
public void methodOut(){
Inner inner = new Inner();
inner.show(); //外部方法 调用内部方法
}
}
package com.nchien.demo2;
public class Demo2Test {
public static void main(String[] args) {
Demo2 demo2 = new Demo2();
demo2.methodOut();
System.out.println("=================");
Demo2.Inner inner = new Demo2().new Inner();
inner.show();
}
}