重新梳理it知识之java-05面向对象

旭东东ღゝ◡╹)ノ♡      2022-05-06     189

关键词:

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

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

面试题

重新梳理it知识之java-01语法

0.标识符的命名规范包名:xxxyyyzzz类名、接口名:XxxYyyZzz(大驼峰)变量名、方法名:xxxYyyZzz常量名:XXX_YYY_ZZZ//**************强制类型转换***********classTest{publicstaticvoidmain(String[]args){doublea=12.3;intb=(int)a;//这里将a的类型(double)转换为in 查看详情

前端面试知识点梳理之五——javascript面向对象

一、相关问题  1.创建对象有几种方法  2.原型,构造函数,实例,原型链  3.instanceof的原理  4.new运算符二、问题解答1.创建对象有几种方法 查看详情

java知识点梳理——装箱和拆箱

1、前言:Java是典型的面向对象编程语言,但其中有8种基本数据类型不支持面向对象编程,基本数据类型不具备对象的特性,没有属性和方法;Java为此8种基本数据类型设计了对应的类(包装类),使之相互转换,间接实现基本... 查看详情

面向对象原型链继承知识梳理

单例模式:就是一个对象咯varperson={name:‘xuwen‘,age:17};varperson2={name:‘xiaoxu‘,age:25}工厂模式:就是一个函数,解决批量生产问题1functionfn(name,age){2varobj={};3obj.name=name,4obj.age=age,5obj.write=function(){6console.log(obj.nam 查看详情

.net知识梳理——3.面向对象

1.面向对象1.1       封装、继承、多态理解1.1.1 封装封装就是将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中... 查看详情

java面向对象泛型

这个第一篇知识梳理的博客,希望我可以坚持下去将知识进行总结。这是在极客学院里看到的视频,目录如下,蛮清晰的。然后我将视频中所说再记忆下。java面向对象之泛型:认识泛型  JavaSE1.5的新特性,泛型的本质是参数... 查看详情

javascript之面向对象的程序设计

...结合了IMOOC网上的《JS深入浅出》教程在此做一下知识的梳理和总结。一、什么是对象ECMA-262中把对象定义为:“无序属性的组合,每个属性包含基本值、对象或者函数。”这就相当于说对象是一组没有特定顺序 查看详情

面向对象知识点梳理

1.核心思想:万物皆对象(OOP面向对象)2.软件出现的目的(1)用计算机的语言描述现实世界(2)用计算机解决现实世界的问题3.面向对象设计和开发程序的好处(1)(人)和(计算机)交流更加流畅(2)提高设计和开发效率4.生活中定义"看得见... 查看详情

面向对象知识点梳理篇一(代码片段)

0.OOP-Python面向对象Python的面向对象面向对象编程基础公有私有继承组合,Mixin魔法函数魔法函数概述构造类魔法函数运算类魔法函数1.面向对象概述(ObjectOriented,OO)OOP思想接触到任意一个任务,首先想到的是任务这个世界的构... 查看详情

java基础知识之面向对象

类(对象)之间的关系之关联关系;比如学院-教授,学院-研究生,教授-研究生。继承关系是一般和特殊的关系;比如:运动员-球类运动员-篮球运动员。聚合关系是整体和部分的关系,包括聚集和组合2种类型,比如球队-队长... 查看详情

李洪强ios开发之oc语言基础知识

OC语言基础知识一、面向对象OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能的类。术语... 查看详情

js常见知识点3.面向对象之继承设计模式

一、面向对象的三大特征  建议回复:   封装:屏蔽内部细节、调用外部接口实现对应功能(函数调用)  继承:子类继承父类中的属性和方法  多态(js中不存在多态的概念)二、继承  建议回复:    继承:... 查看详情

javase之基础篇——面向对象

...且通过九个经典的问题供大家练习我们之前学的java基础知识,之后在介绍判断两个数组相同案例的时候给大家留了两个问题供大家思考。最后通过思维导图帮助大家回顾整篇文章介绍的相关知识,慢慢地培养读者java的整体架构... 查看详情

python之面向对象知识点汇总(小白必会)(代码片段)

目录Python基础之面向对象一、编程思想1、面向过程2、面向对象二、类与对象的创建1、类的语法结构2、定义与调用3、给对象添加独有属性4、对象独有属性修改三、动态、静态方法1、直接在类中定义的函数2、绑定给类的函数3、... 查看详情

java知识体系之基础知识

1.WhatisJava?Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了... 查看详情

重新认识java----面向对象之继承!

...用它,最后要知道如何使用它。这篇文章,我们重新认识一下java中的继承。继承是个什么东西我们先来看一下上一篇文章中的代码:你会发现,这两个类中都有name属性,都有marry方法。一个人,不可能只... 查看详情

typescript知识梳理

概述 TypeScript简称TS,具有类型系统,且是JavaScript的超集。它可以编译成普通的JavaScript代码。TypeScript支持任意浏览器,任意环境,任意系统并且是开源的。通过TS能够生成JS,TS是结构性语言,能够类似C#和Java那样,面向对象编... 查看详情

.net知识梳理——3.面向对象

1.面向对象1.1       封装、继承、多态理解1.1.1 封装封装就是将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中... 查看详情