[学][2023.11.21] Java 自学 强化 第六天

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();
    }
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值