JAVA中级

this关键字:

在调用方法的时候,java会自动把当前对象传递给该方法,在方法中由this来接收这个对象,还可以通过this调用类中的其他构造方法

构造方法:

1 public 类名(属性形参列表) {

​ }

2 没有返回值,在我们创建对象的时候自动调用构造方法

3 java会自动赠送每个类一个无参数的构造方法,如果自己定义了,就不会再赠送了

static 静态:

1 被static关键字修饰的内容是由各个对象所共享的,属于类的,不属于对象

2 例如:static String country = “唐朝”; 当改变一个对象的属性时,所有对象的属性都会变,但是推荐使用类名访问静态的内容

3 静态的特点:

​ 1 数据由各个对象共享

​ 2 优先于对象产生(先加载静态的内容,再产生对象),例如:武则天可以讲述秦始皇的历史,秦始皇不知道后世有个武则天

​ 3 属于类,不属于对象!!!(很重要)

4 没有static修饰的方法是成员方法,必须要拿对象来访问,先创建对象

5 静态方法里可以直接调用静态的内容(例如main方法里可以直接调用静态的方法,没必要创建对象)

6 静态方法里不可以由 this 关键字,不可以调用非静态的方法(因为静态内容优先产生,秦始皇不能讲述武则天的历史)

访问权限:

1 导包: import 包名.类名;

2 public:公共的,所有人都可以访问,别的包中的类也可以使用

3 default:包内访问权限,在自己包内可以随意访问,别的包不行

4 private:私有的,只能在自己的类里面使用,自己的老婆只能自己用!

5 protected:在子类或同包下才可以使用

继承:

1 子类可以自动拥有父类中除了私有内容之外的所有东西

2 当出现 x 是 y 的一中时,就用继承,可以简化代码

3 方法重写:子类对父类中提供的方法进行重新定义(子类对父类提供的方法不满意,父类方法无法满足子类的需求)

4 方法重写的语法:子类的方法名和和返回类型要与父类完全一致!! 重写又成为方法的覆盖,子类方法把父类方法覆盖

super关键字:

1 super:表示父类中的内容

2 this:表示当前类中的内容

3 使用 super 和 this 可以用来区分父类和子类中的内容

4 super可以调用父类的构造方法,必须写在子类构造方法的第一行。( 注意父类的构造方法无参数时可以省略,有参数必须写, 格式为:super(参数列表) )

多态:

1 多态是建立在继承的基础之上的,有继承才有多态

2 同一个对象拥有多种形态(例如动物有 猫、狗、人等多种形态 / 我当时说你是动物你还反驳我?-.-)

3 作用:把多种不同的数据类型统一

4 把子类的对象赋值给父类的引用(变量) ------------>向上转型 (缺点:会屏蔽掉子类特有的方法,例如动物不会有猫的动作-----抓老鼠)

5 把父类的对象赋值给子类的引用(变量)------------->向下转型 (向下转型有风险,java要求必须强制类型转换,例如动物有很多种类,不一定是猫),用法:Cat c = (Cat) animal;

final关键字:

1 被final修饰的变量不可变,又称为常量

2 被final修饰的方法不可以被重写,被final修饰的类不可以被继承,(还记得String类就是final修饰的吗?)

3 总之final就是不可变!!! 可以用,不可以改!!

抽象:

1 抽疯 + 想象 : 简单理解就是你啥也看不出来

2 现实中不存在的东西,在java中只声明,不实现

3 使用 abstract 修饰,例如 public abstract void eat(); // 这里就是一个抽象方法,你看不出来方法里有什么,这就是抽象!

4 注意:抽象方法方法没有方法体,直接以分号结尾

5 特点:

​ 1 抽象类不能实例化(也就是不可以创建对象)

​ 2 抽象类的子类必须实现(或叫重写)抽象类的方法,否则子类必须也是抽象类,因为只要类中有一个抽象方法,该类必须是抽象类,否则程序报错

​ 3 通过抽象类我们可以强制的要求其子类必须也有哪些方法

​ 4 抽象类中也可以有正常的方法

接口:

1 接口实际上就是一种特殊的抽象类

2 接口中的方法必须全都是抽象方法,不可以有正常的方法(这里区别于抽象类)

3 接口用 interface 声明,与类的声明 class 不同

4 接口中的内容默认全部都是公开的,所以就没必要写 public 了啊

5 接口可以被继承,但只能被接口继承 (人只能生人)

6 接口和类之间只能是实现的关系 ,使用关键字 implements , 区别于继承 extends

7 类只能单继承,接口可以多实现,一个类只能继承一个父类,一个类能实现多个接口

8 接口中的属性都是全局(public)静态(static)常量(final)

成员变量的初始值:

1 java中的变量都必须先声明,后赋值,最后再使用

2 java中的成员变量会在创建对象的时候自动执行一次初始化操作,都会给一个默认值:

int ----> 0

boolean------>false

引用数据类型------->null (null表示空,什么都没有,先占位保证程序正确,以后需要再补全)

Object类:

在java中,所有类都继承 Object 类,即使不写 extends 继承关系,也会默认继承 Object 类

equals 和 == :

1 “==” 用于判断左右两边数据(内存地址)是否相等------>用于比较基本数据类型

2 equals:是 Object 类中提供的一个方法,比较两边对象是否相等 (用于引用数据类型)

3 “c1==c2” : 默认比较两个对象的内存地址 (之前创建了 Cat 类的对象 c1 和 c2)

4 “c1.equals(c2)”:两个对象比较用 equals() ,Cat类没有 equals(),默认调用父类 Object 类的 equas(),但是Object类提供的equals()也是比较内存地址,所有子类需要重写 equals,(重写规则你应该还记得把),自己写判断逻辑

5 判断字符串是否相等必须用 equals() ,String类帮我们重写了 equals(),比较的是字符串内容是否相等

toString():

1 toString()方法是对一个对象用字符串形式的描述

2 sout©:默认调用toString(),相当于 sout(c.toString());

3 java推荐你重写这个方法,因为默认的返回值太丑了啊,返回的是 包名.类名@对象的内存地址

instanceof关键字:

1 用于判断 xxx 对象 是否属于 xxx 类的

2 用法:对象 instanceof 类名

参数的传递问题:

1 值传递:把变量的值(内存地址)作为参数进行传递

2 引用传递:直接把变量作为参数传递

3 java中使用的都是值传递

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值