Java学习笔记六:面向对象深入(1)

发布时间:2024年01月16日

目录

1、静态变量与静态方法

2、工具类

3、继承

(1)可继承的内容

(2)方法重写

(3)继承中的构造方法

4、this和super

5、多态

6、包、final、权限修饰符、代码块

(1)包

(2)final关键字

(3)权限修饰符

(4)代码块???????


1、静态变量与静态方法

需要用static关键字修饰;

静态变量可以被该类所有对象共享;

可以通过类名调用,也可以通过对象名调用;

静态变量随着类的加载而出现在内存里,优先于对象的出现。

静态方法多用在测试类和工具类中;

可以通过类名调用;

静态方法只能访问静态变量和静态方法,

非静态方法可以访问静态变量和静态方法,也可以访问非静态的成员变量和成员方法。

静态方法没有this关键字。

静态方法不能调用实例变量;

2、工具类

javabean类:用来描述一类事物

测试类:用来测试其他类

工具类:用来帮助我们完成一些工作,具有私有化构造方法,方法定义为静态

3、继承

通过extends实现继承关系

例如:public class OneBrandPhone extends Phone{}

OneBrandPhone称为派生类或子类,Phone为基类或父类或超类

(1)可继承的内容

继承后子类不能继承父类的构造方法,可以继承所有的成员变量,继承public的成员方法,不能继承private的成员方法。

非私有private
构造方法不能不能
成员变量
成员方法不能

java只能单继承,但可以多层继承。

每一个类都直接或间接继承与Object类。

字节码文件在方法区中临时存储。

只有父类的虚方法才能被子类继承。

虚方法即不能被private、static、final修饰的方法。、

上层会为下层提供虚方法表以便继承使用。

子类中访问成员变量如果没有关键字就是就近原则,如果有this关键字,则是本类中的,如果是super关键字,则是父类中的变量。没有多次super。

(2)方法重写

@Overrride放在重写后的方法上面,可校验重写的方法。

重写是覆盖了虚方法表中的方法。

重写方法的名称、形参列表与父类一致。

返回类型须小于等于父类。

私有方法不能重写,只有虚方法表中的方法可以被重写。

(3)继承中的构造方法

父类的构造方法不会被继承。

子类中的使用构造方法需要先访问父类中的无参构造。如果需要访问父类中的数据,而父类没有完成初始化,子类将无法使用。

子类构造方法的第一行语句为super(),不写也存在。

4、this和super

this即可视为一个变量,表明当前方法调用者的地址。

super代表父类存储空间。

关键字访问成员变量访问成员方法访问构造方法
this

this.成员变量

访问本类成员变量

this.成员方法()

访问本类成员方法?

this()

访问本类构造方法

super

super.成员变量

访问父类成员变量

super.成员方法()

访问父类成员方法

super()

访问父类构造方法

5、多态

多态形式:

父类类型 对象名=子类对象;

多态的实现需要有继承关系,有父类引用指向子类对象,有方法重写。

变量调用:编译看左,运行看左。

即编译时会看左边父类中有没有这个变量,没有就失败。

运行是实际上使用的是父类的变量。

方法调用:编译看左,运行看右

运行是使用的是子类的方法。

多态的弊端:不能使用子类的特有功能。需要变回子类类型。

可以自动类型转换,也可以使用强制转换。

Animal a =new Dog();

Dog d =(Dog) a;

6、包、final、权限修饰符、代码块

(1)包

包就是文件夹。包起名需要小写。

全类名或全限定:包名.类名

使用java.lang不需要导包,其他需要。

对于不同包中的同名类需要使用全类名。

(2)final关键字

final可以修饰方法、类、变量。

被final修饰的方法不能被重写,被final修饰的类不能被继承,被final修饰的变量只能被赋值一次。

(3)权限修饰符

private<空着不写<protected<public

private修饰后只能在同一个类中;

空着不写可以被同一个包其他类访问;

protected修饰后可以被不同包下的子类访问;

public修饰后不同包下的无关类也可访问。

(4)代码块

包括局部代码块、构造代码块和静态代码块。

局部代码块、构造代码块格式:{代码}

局部代码块:指这一块运行完后就消失。

构造代码块可以把多个构造方法中重复的代码抽取出来,写在成员位置,在创建本类对象时,会先运行构造代码块,再执行构造方法。

也可以写在一个构造方法中,使用this(null,0)调用。

静态代码块:

格式:static{代码}

随着类的加载而加载,自动触发,执行仅一次。

使用在做一些数据初始化的工作时。

文章来源:https://blog.csdn.net/weixin_50626279/article/details/135605406
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。