zoukankan      html  css  js  c++  java
  • java-面向对象(四)

    一、面向对象特征之三:多态性

    1.理解多态性

    一个事物的多种形态

    2.对象的多态性

    父类的引用指向子类的对象(或子类的对象赋给父类的引用)

    3.多态的使用:虚拟方法的调用

    有了对象的多态性以后,我们在编译期,只能调用父类中声明的方法,但在运行期,我们实际执行的是子类重写父类的方法。

    4.多态性使用的前提

    ●类的继承关系
    ●方法的重写

    5.对象的多态性,只适用于方法,不适用于属性,是运行时行为

    虚拟方法的调用

    多态性的使用举例

    package Test;
    public class AnimalTest {
        public static void main(String[] args) {
    	    AnimalTest test = new AnimalTest();
    	    test.func(new Dog());
    	    test.func(new Cat());
        }
        //多态性的使用,省去了方法的重载
        public void func(Animal animal){//Animal animal = new Dog();
        	    animal.eat();
    	    animal.shout();
        }
    }
    
    class Animal{
        public void eat(){
    	    System.out.println("动物:进食");
        }
        public void shout(){
    	    System.out.println("动物:叫");
        }
    }
    
    class Dog extends Animal{
        public void eat(){
    	    System.out.println("狗吃骨头!");
        }
        public void shout(){
    	    System.out.println("汪汪汪");
        }
    }
    class Cat extends Animal{
        public void eat(){
    	    System.out.println("猫吃鱼!");
        }
        public void shout(){
    	    System.out.println("喵喵喵");
        }
    }
    

    二、instanceof 操作符

    x instanceof A:检验x是否为类A的对象,返回值为boolean型。
    ➢要求x所属的类与类A必须是子类和父类的关系,否则编译错误。
    ➢如果x属于类A的子类B,x instanceof A 值也为true。

    三、Object类的使用

    Object类是所有Java类的根父类

    如果在类的声明中未使用extends关键字指明其父类,则默认父类为java.lang.Object类

    1.equals()方法

    面试题: == 和 equals 的区别

    ●== 既可以比较基本类型也可以比较引用类型。对于基本类型就是比较值,对于引用类型就是比较内存地址
    ●equals的话, 它是属于java.lang.Object类里面的方法, 如果该方法没有被重写过默认也是==;我们可以看到String等类的equals方法是被重写过的,而且String类在日常开发中用的比较多,久而久之,形成了equals是比较值的错误观点。
    ●具体要看自定 义类里有没有重写Object的equals方法来判断。
    ●像String、Date、File、包装类等都重写了Object类中的equals()方法,重写以后,比较的不是两个引用的地址是否相同,而是比较两个对象实体内容是否相同

    2.toString()方法


    像String、Date、File、包装类等都重写了Object类中的toString()方法,使得在调用对象的toString()时,返回实体内容。

    四、包装类的使用

    类型的强转,两者必须有子父类的关系。

    java提供了8种基本数据类型对应的包装类,使得基本数据类型的变量具有类的特征

    ●针对八种基本数据类型定义相应的引用类型一包装类(封装类)
    ●有了类的特点,就可以调用类中的方法,Java才是真正的面向对象

    基本类型、包装类、与String类之间的转换

    1.基本数据类型 ---> 包装类

    package baozhunglei;
    import org.junit.Test;
    public class WrapperTest {
        //转换成包装类调用构造器
        @Test
        public void test1(){
    	    int num1 = 10;
    	    Integer in1 = new Integer(num1);
    	    System.out.println(in1.toString());
    	
    	    Integer in2 = new Integer("666");
    	    System.out.println(in2.toString());
    	
    	    Float f1 = new Float(66.6f);
    	    Float f2 = new Float("66.6");
    	    System.out.println(f1);
    	    System.out.println(f2);
    	
    	    Boolean b1 = new Boolean(true);
    	    Boolean b2 = new Boolean("TruE");
    	    System.out.println(b2);//true
    	    Boolean b3 = new Boolean("true666");
    	    System.out.println(b3);//false
        }
    }
    

    2.包装类 ---> 基本数据类型

    package baozhunglei;
    import org.junit.Test;
    public class WrapperTest {
        @Test
        public void test2(){
    	    Integer in1 = new Integer(12);
    	    int i1 = in1.intValue();//转换为基本数据类型
    	    System.out.println(i1 + 1);
        }
    }
    

    自动装箱

    public void test3(){
    	int num2 = 10;
    	Integer in1 = num2;
    	
    	boolean b1 = true;
    	Boolean b2 = b1;
    }
    

    自动拆箱

    int num3 = in1;
    

    3.基本数据类型、包装类 ---> String类型

    package baozhunglei;
    import org.junit.Test;
    public class WrapperTest {
        @Test
        public void test4(){
    	    int num1 = 10;
    	    //方式1:
    	    String str1 = num1 + "";
    	    //方式2:调用String的valueOf()方法
    	    float f1 = 12.3f;
    	    String str2 = String.valueOf(f1);
    	
    	    Double d1 = new Double(12.4);
    	    String str3 = String.valueOf(d1);
        }
    }
    

    4.String类型 ---> 基本数据类型、包装类

    public void test5(){
    	String str1 = "123";
    	int num = Integer.parseInt(str1);
    }
    

    面试题

  • 相关阅读:
    HD200703
    并查集——合作网络D306
    并查集——易爆物D305
    NOIP初赛知识点
    离散化
    wsl2启动时无法添加自启动和加载环境变量的解决办法
    wsl2上用docker部署运行环境,mvn构建镜像找不到dockerhost
    docker 创建自己的镜像仓库
    单机多容器管理(已转k8s工具,仅参考) docker compose简介+使用+遇到的坑
    ubuntu下载安装jdk+maven,配置ssh
  • 原文地址:https://www.cnblogs.com/nnadd/p/12751310.html
Copyright © 2011-2022 走看看