zoukankan      html  css  js  c++  java
  • 1.Java基础-多态性


    向上转型:


    向下转型:


    多态性的应用:

    package com.jikexueyuan.pol;
    
    
    class A1{
        public void tell1() {
            System.out.println("A -- tell1");
        }
    }
    class B1 extends A1{
        public void tell2() {
            System.out.println("A -- tell2");
        }
    }
    
    class C1 extends A1{
        public void tell3() {
            System.out.println("A -- tell3");
        }
    }
    //以上是比较繁琐的调用方式
    class D1 extends A1{
        
    }
    
    
    
    public class PolDemo02 {
    
        public static void main(String[] args) {
            say(new B1());    //都是调用父类A1的代码而并没有调用自己的代码tell2
            say(new C1());    //都是调用父类A1的代码而并没有调用自己的代码tell3
            
            //以上要是有100个类,那岂不是要调用100个方法?,所以
            say(new D1());
        }
        
    //    public static void say(B1 b) {
    //        b.tell1();
    //    }
    //    public static void say(C1 c) {
    //        c.tell1();
    //    }
        
        
    //以上要是有100个类,那岂不是要调用100个方法?,所以要运用到对象多态性来调用:
        public static void say(A1 a) {
            a.tell1();    
        }
        
        
    
    }


    instanceof关键字:


    抽象类的应用:

    package com.jikexueyuan.pol;
    
    
    abstract class Person{
        private int age;
        private String name;
        
        public Person(int age,String name) {
            this.age = age;
            this.name = name;
        }
        
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        
        public abstract void want();
        
    }
    
    class Student extends Person{
        //学生有自己的属性score(成绩)
        private int score;
        
        public int getScore() {
            return score;
        }
    
        public void setScore(int score) {
            this.score = score;
        }
    
        //复写父类的抽象方法:
        public Student(int age, String name,int score) {
            super(age, name);
            this.score = score;
            // TODO Auto-generated constructor stub
        }
        
        //父类中有构造方法,所以子类也要复写构造方法:
        public void want() {
            System.out.println("姓名:"+ getName() + "年龄:" + getAge() +"成绩" + getScore() );
            
        }
        
    }
    
    class Worker extends Person{
    
        private int money;
        
        
        public int getMoney() {
            return money;
        }
    
    
        public void setMoney(int money) {
            this.money = money;
        }
    
        //构造方法
        public Worker(int age, String name,int money) {
            super(age, name);
            this.money = money;
            // TODO Auto-generated constructor stub
        }
        
        public void want() {
            System.out.println("姓名:"+ getName() + "年龄:" + getAge() +"工资" + getMoney() );
        }
        
    }
    
    
    public class AbsDemo01 {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
    
            Student s = new Student(10,"小明",100);
            s.want();
            Worker w = new Worker(30,"大明",1000);
            w.want();
        }
    
    }
    
    
    //不要去继承已经完成好的类


    面向对象接口的使用:

    package com.jikexueyuan.pol;
    
    interface USB{
        void start();
        void stop();
    }
    
    class C{
        public static void work(USB u) {
            u.start();
            System.out.println("工作中");
            u.stop();
        }
    }
    
    class USBDisk implements USB{
    
        @Override
        public void start() {
            System.out.println("U盘开始工作");
            
        }
    
        @Override
        public void stop() {
            System.out.println("U盘停止工作");
            
        }
        
    }
    
    class Printer implements USB{
    
        @Override
        public void start() {
            System.out.println("打印机工作");
            
        }
    
        @Override
        public void stop() {
            System.out.println("打印机停止工作");
            
        }
        
    }
    public class InterDemo01 {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            C.work(new USBDisk());
            C.work(new Printer());
        }
    
    }
  • 相关阅读:
    Android view显示在软键盘上方
    ListView子项点击无反应的解决办法
    adb for mac
    Android文件的流操作工具类
    Linux之间配置SSH互信(SSH免密码登录)
    最简单的Linux虚拟机磁盘扩容方法
    Grunt + Bower—前端构建利器
    Microsoft Office 2016 简体中文 Vol 版镜像下载(Pro Plus、Visio、Project 下载)
    如何在windows下安装GIT
    如何在Crystal框架项目中内置启动MetaQ服务?
  • 原文地址:https://www.cnblogs.com/juham/p/15178115.html
Copyright © 2011-2022 走看看