类与类之间的关系、包和访问权限修饰符、关键字(笔记)

目录

#类与类之间的关系

#包和访问权限修饰符

1.包的访问

2.权限访问修饰符

#关键字

一、this关键字

二、abstract关键字

三、static关键字

四、interface关键字(接口)

五、final 关键字


#类与类之间的关系

1.类的关联关系

1)两个类之间的简单关联表示了两个同等地位类之间的结构关系。当你想要表示结构化关系时使用关联

2)关联表示has-a关系,如学生拥有一个课程,往往表现为B作为A的属性存在(A关联B)

2.一对一及一对多关系

1)最典型的一对一关系莫过于人和证件之间的关联,例如:一个人只能有一个驾照,而一个驾照只能归属与一个人

2)人还可以跟其他事物构建一对多的关联关系,比如将驾照换为荣誉证书,那么一个人可以有多个荣誉证书,我们可以使用数组或集合来描述这个关系

3.依赖关系

1)依赖关系是一种使用关系,特定事物的改变有可能会影响到使用该事物的事物,反之不成立

2)此关系最为简单,也最好理解,所谓依赖就是某个对象的功能依赖于另外的某个对象,而被依赖的对象只是作为一种工具在使用,而并不持有对它的引用

3)依赖体现了“ use a”关系

4)  依赖关系一般使用方法的参数体系

人买票,只能买开发购买的车票,那么此时管理员需要修改车票的状态,此时可以把车票作为方法的参数使用,体现了类与类之间的依赖关系。

#包和访问权限修饰符

1.包的访问

1)导入外部包的某一个类,关键字“import”

例如:import com.bb.Student;

2)导入外部包的所有类,关键字“import”

例如:import com.bb.*;

2.权限访问修饰符

Java语言有四个权限访问修饰符,权限从大到小依次为:

1)public :公共权限   修饰类、属性、方法            可以被任意类访问

2)protected:受保护的权限   修饰属性、方法         可以被同包类访问,如果不是同包类,必须是该类的子类才可以访问。

3)default:同包权限  修饰类、属性、方法           只能被同包的类访问

4)private:私有权限  修饰属性、方法               只能在本类中访问    

#关键字

一、this关键字

1.this关键字的作用:表示对当前对象的引用

2.his关键字的用法:

访问成员变量:this.成员变量名    

访问构造方法:this(形参列表)      注意:必须在方法的第一行

访问成员方法:this.方法名();       注意:不可以出现在静态static方法或者代码块

1)this引用成员变量示例

 2)this引用构造方法示例

3)this引用成员方法示例

二、abstract关键字

1.含义:说不明白的事情用抽象来描述,在类中声明一个方法,不给他实现。

2.abstract他可以修饰什么?

1)修饰类

语法格式:访问权限修饰符  abstract  class 类名{}

2)修饰方法:

语法格式:访问权限修饰符  abstract 返回值类型  方法名();

注意

1)如果类中的方法是抽象的,那么这个类一定是抽象类。

2)抽象方法是没有方法体的,只可以被重写。

3)抽象的类就是用来被继承的。

     抽象类可以继承普通类与抽象类。

4)如果这个类是抽象类,那么子类一定要重写父类的方法,除非子类也是抽象类。

5)抽象类不可以被实例化,也就是不可以用new创建对象 ,但可以有构造方法

6)抽象类通过其子类实例化,而子类需要覆盖掉抽象类中所有的抽象方法后才可以创建对象,否则该子类也是抽象类。

7)用abstract修饰的类就是抽象类。抽象方法必须定义在抽象类中。但是抽象类中不一定有抽象方法

8)抽象类可以有成员属性和非抽象的成员方法。

3.abstract与其他修饰符的关系

1)final与abstract不能共存:         

        final:它的作用  修饰类代表不可以继承  修饰方法不可重写         

        abstract修饰类就是用来被继承的,修饰方法就是用来被重写的。

2)static与abstract不能共存:  

        static修饰的方法可以用类名调用,对于abstract修饰的方法没有具体的方法实现,所以不能直接调用,也就是说不可以与static共存。     

3)private与abstract不能共存:    private修饰的只能在本类中使用,abstract方法是用来被子类进行重写的,有矛盾所有不能共存.

三、static关键字

1.定义

1)static被称为静态,可以用来修饰类的属性或者方法。

2)如果类的某个属性,不管创建多少个对象,属性的存储空间只有唯一的一个,那么这个属性就应该用static修饰,被static修饰的属性被称为静态属性,被static修饰的方法被称为静态方法。

3)static属性可以使用对象调用,也可以直接用类名调用

4)静态属性是类的所有对象共享的,即不管创建了多少个对象,静态属性在内存中只有一个

2.可以修饰什么?

1)修饰属性        访问权限修饰符  static 数据类型   属性名;

示例:

2)修饰方法        访问权限修饰符  static 返回类型  方法名();

3.静态方法-总结

1)本类的方法之间的调用

静态方法可以被任何方法(静态方法和非静态方法)直接调用;

非静态方法可以被非静态方法直接调用;

非静态方法不能被静态方法直接调用,需要创建对象,用对象名调用。

2)不同类方法之间的调用

调用静态方法,使用类名直接调用 ;

非静态方法不能直接调用,需要创建对象,用对象名调用。

4.静态代码块

static代码块:

        随着类的加载而加载,只执行一次

        用于给类进行初始化  

四、interface关键字(接口)

1.定义

接口(interface):在java中接口主要是使用来拓展定义类的功能,可以弥补Java中单继承的缺点

接口的定义        

         java接口是一系列方法的声明,是一些抽象的集合,一个接口只有抽象方法没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。         简单地说,接口就是特殊的抽象类,即所有方法都是抽象方法的抽象类就是Java中的接口。

2.接口的格式

 接口中的成员修饰符是固定的:

1)public static final 修饰的变量变常量,该值不能改变,只能读

2)修饰符:可选,用于指定接口的访问权限,可选值为public。即使省略,也依然是public。

3)接口名:必选参数,用于指定接口的名称,接口名必须是合法的Java标识符。一般情况下,要求首字母大写

4)方法:接口中的方法只有定义而没有被实现。

3.类与接口的关系

类和接口是实现关系,实现类的声明形式如下:

1)类与接口之间是实现关系,类实现接口。

2)  接口不可以被实例化。

3)  实现了接口的实现类必须重写接口中所有抽象方法后,这个子类才可以被实例化,否则报错。

4)  一个类可以实现多个接口,多个接口用逗号分隔,也可以不实现接口。

5)  Java不支持多继承,Java将多继承机制进行改良变成了多实现。

6)  一个类在继承另一个类同时,还可以实现多个接口 。

7)  接口的出现避免了单继承的局限性。 

类实现接口的示例:

4.接口和接口的关系

接口和接口之间是继承关系

接口与接口之间是继承关系,而且可以多继承

接口的出现避免了单继承的局限性

 

5.接口与抽象类的区别

        在Java中接口是一个比抽象类更加抽象的概念,由于只声明行为,因此在接口中的方法均是抽象的,下表中罗列了接口和抽象类的差异:

1)  抽象类体现继承关系,一个类只能单继承

2)  接口体现实现关系,一个类可以多实现

3)  抽象类是继承 is a关系 (所属关系)在定义该体系的基本共性内容

4)接口是实现是like a关系(不所属关系)在定义该体系额外功能 

相同点:不能实例化对象;

6.接口可实现多继承原因

1)接口继承与类继承对比: Java类的继承是单一继承,Java接口的继承是多重继承

2)接口可实现多继承原因分析:

不允许类多重继承的主要原因是,如果A同时继承B和C,而B和C同时有一个D方法,A无法确定该继承那一个

接口全都是抽象方法,不存在实现冲突,继承谁都可以,所以接口可继承多个接口

五、final 关键字

1.final的定义

        在Java中,final关键字有最终的,不可修改的含义

        final 用于声明属性,方法和类

属性:定义就必须直接赋值或者在构造方法中进行赋值,并且后期都不能修改。  

方法:定义必须有实现代码,并且子类里不可被覆盖。  

类:不能被定义为抽象类或是接口,不可被继承。

2.final修饰属性

如果某个变量被final修饰,那么该变量就成为常量,不能被修改,一般语法:

常量在声明时必须初始化,声明之后不能对其进行二次赋值,其后任何试图对常量进行赋值的语句都将报错。

赋值两种方式:构造方法赋值和声明时等号赋值 一些数学定理中的常量经常使用final修饰    

eg:π= 3.14159265358979;  E= 2.718281828459045;

示例:

对参数做final修饰

        在方法参数前面加final关键字,为了防止数据在方法体中被修改。

3.final修饰方法

如果将某个成员方法修饰为final,则意味着该方法不能被子类覆盖,这就和抽象方法必须由子类实现的规定互相矛盾,因此,final和abstract不能同时修饰一个方法

        final方法的一般声明格式是:

 示例:

 

如果将某个类修饰为final,则说明该类无法被继承,一般语法:

 示例:

Java中有一个最常用的final类:java.lang.String 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值