Java基础(三)

185 阅读4分钟

面向对象(上)

可变个数形参方法

允许定义能和多个实参相匹配的形参,调用时传入的形参个数可以为0,1,2,3.... 可变个数形参的方法无法与数组形参的同名函数进行重载 格式:

public void show(String ... strs){
        
 }
show("123");
show("123","234");//两个调用均可与可变形参函数匹配
权限修饰符

image.png

构造器

当类中显式定义了构造函数时,需要手动创建默认构造函数

JavaBean

javaBean是一种Java语言写成的可重用组件。JavaBean是符合以下标准的Java类:

  • 类是公共的
  • 有一个无参的公共的构造器
  • 有属性,有对应的get、set方法
this关键字

用于取得当前对象。可以用this.属性或this.方法的方式调用当前对象的属性或者方法 。 同时,在一个构造器中可以通过this(参数)的方式调用另一个构造器,执行构造器的代码,this()必须写在当前构造器首行

MVC模式

image.png image.png

继承性
class Student extends Person{
}

Java不允许多重继承

Object类

如果没有显式地声明一个类的父类,那么其继承于Object类。Java中所有类均直接或间接继承于Object类,可以使用Object类的功能。 Object中的equals和 == 的区别与联系

  • == 作用于基本数据类型时,会比较数值大小,相等则返回true; == 作用于引用数据类型时,会比较两个对象的地址值是否相同,即判断是否指向同一个实体
  • equals是一个方法,只能对引用数据类型使用。作用原理就是 == 。但String、Date、File等类型对equals进行过重写,能实现我们想要的目标,自定义的类则要自己进行重写equals方法。
重写

在子类中,可以根据需要对父类中的 方法进行改造,在程序执行时,子类将覆盖父类的方法。 image.png 重载与重写的区别:

  • 定义的区别
  • 重载为静态绑定,在编译阶段编译器就能确定调用哪个函数;而重写为动态绑定,只有运行时才能确定调用子类还是父类的方法
super关键字

当子类中重写了父类的某一方法,若依然想在子类中调用父类的未被重写的方法,就可以使用super进行调用:super.XXX()。在子类构造器中可以使用super(参数)的方式调用父类的构造器,且必须声明在子类构造器首行。同时,若子类构造器中没有显示调用this或者super,则会默认使用super( )调用父类构造器(此时父类一定要有一个空参构造器)

多态性

父类的引用指向子类的对象,并且只能调用父类中声明的方法,如果该方法被子类重写过,那么会调用重写后的方法。 例如:Person p=new Man() 虚拟方法调用: image.png 多态的使用前提:类的继承与方法的重写 多态的作用:使用父类的对象来容纳各种子类对象,这样有利于统一处理,减少代码冗余。例如:man和woman继承于person。如果想写一个方法调用man或者woman中的方法,那么如果不使用多态,则需要写两个形参不同的方法。但如果将形参定义为person对象,则可以在函数体中直接调用被重写的方法,且只需要写一个方法即可,这样减少了代码冗余。

instanceof关键字

a instanceof A:判断a是否为A的实例

包装类

针对8种基本数据类型进行的包装后的包装类,使得基本数据类型具有类的特征 image.png

基本数据类型、包装类、String之间的相互转化

image.png

基本数据类型--->包装类:调用包装类构造器

Integer i=new Integer("123");
Integer i=10;//自动装箱

包装类--->基本数据类型:调用包装类的xxxValue

Integer i = new Integer(a);
int b=i.intValue();
//或者
int c=i;//自动拆箱

基本数据类型、包装类--->String:加""或者调用String.valueOf()

int a=10;
String s=a+"";
//或者
String s1=String.valueOf(a);

String--->基本数据类型、包装类:调用包装类的parseXXX()方法

String s="100";
int a=Integer.parseInt(s);