java面向对象及其进阶

  • 成员变量类内,方法外定义的;堆内存,随对象的存在而存在;

  • 局部变量:方法中定义;栈内存;随方法的调用而存在;

  • 在同一类中,访问时采用的是就近原则(即若该方法中有这一局部变量,则采用局部变量;若无这一局部变量,则访问成员变量);

  • 若有成员变量与局部变量同名的现象,可通过this关键字访问同一类中的成员变量

构造方法

创建对象的时候,虚拟机会自动调用构造方法,作用是给成员变量进行初始化;

若不写构造方法,系统会默认有一个空参构造;写了构造方法则系统不会默认给空参构造;

格式:

public class user{
    //成员变量
    private String name;
    private int age;
    public user(){
    }//空参构造
    public user(String name,String age){//局部变量
        this.name = name;
        this.age = age;
    }
}

static关键字

静态变量随着类的加载而加载,非静态则是与对象有关的;

被static修饰的成员变量称为静态变量被该类所有对象共享;调用方式:类名调用/对象名调用

静态成员变量在堆内存中有专门的静态存储位置

被static修饰的方法称为静态方法,静态方法中没有this关键字,静态方法只能调用静态变量或静态方法,而非静态方法可以调用所有;原因:this关键字是指向一个对象,而静态方法可以不需创建对象;

继承

java只支持单继承,不支持多继承,但支持多层继承

java中所有的类都直接或间接继承于Obeject类

子类可以直接使用父类非私有的成员

构造方法:子类不能继承父类的构造方法,因为构造方法的名字需要与类名相同;

成员方法:会构造一个虚方法表,子类会继承父类的虚方法表(非final,非static,非private,其中static方法可以调用,但不是继承)

继承中成员变量的访问特点:就近原则(先在局部位置找,本类成员位置找,父类成员位置找,逐级往上);关键字:this,super。成员方法也是类似的

 继承中构造方法的访问特点:父类的构造方法不会被子类继承,子类中所有的构造方法默认先访问父类中的无参构造,再执行自己。原因:子类在初始化时,可能会用到父类的数据,如果父类没有完成初始化,子类将无法使用父类的数据;因此子类在初始化之前,一定要调用父类的构造方法先完成父类数据空间的初始化。子类构造方法的第一句默认就是:super(),不写也存在,但必须是第一句,如果想调用父类的有参构造,必须手动写super进行调用。

多态

同类型的对象,表现出的不同形态;

父类类型 对象名称 = 子类对象;(对象的上转型对象)

前提:有继承关系;有父类引用指向子类对象;有方法重写;Fu fu1 = new Zi();

优点:使用父类型作为形参,可以接受所有的子类对象,体现多态的扩展性和便利性

缺点:不能直接调用子类的特有方法,要进行类型转换

调用成员变量:编译看左边(javac编译时会看父类中有没有这个变量,有就编译成功,否则失败),调用也看左边,java运行代码时,获取的就是左边父类中成员变量的值

调用成员方法:编译看左边(同上),调用看右边(子类在重写父类时,会在虚方法中把父类的方法覆盖)

包就是文件夹;

使用同一个包中的类时,不需要导包;

使用Java.lang中的包时,不需要导包;

其他情况下需要;

是由两个包中的同名类时需要使用全名;

final

最终的,不可改变;

修饰方法,表明该方法为最终方法,不能被重写;

修饰类,表面该类为最终类,不能被继承;

修饰变量,叫做常量,只能被赋值一次;

final修饰的是基本数据类型,那么变量存储的数据值不能改变;

final修饰的是引用数据类型,那么变量存储的地址值不能改变,对象内部的可以改变;

抽象类和抽象方法

强制子类进行重写;

抽象类不能创建对象;抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类;

可以有构造方法;作用是当创建子类对象时,给属性进行赋值的;

抽象类的子类,要么重写抽象类中的所有抽象方法,要么是抽象类;

接口

是一种规则,是对行为的抽象。

public interface 接口名{}

接口不能实例化;接口和类之间是实现关系,通过implements关键字表示;(public class 类名 implements接口名)

接口的子类(实现类)要么重写接口中所有的抽象方法,要么是抽象类;

接口和类的实现关系,可以单实现,也可以多实现;实现类还可以在继承一个类的同时实现多个接口;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Nnlee.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值