Java的类与接口

一、类(class)

(一)类(class)

1、成员:

属性:
属性是静态的,属性的创建格式  (修饰符  数据类型  属性名字)
public String name

方法:
方法是动态的,方法的创建格式(修饰符  返回值类型  方法名(参数列表) {})
public void eat() {
      我是一个吃饭方法
}

构造方法:
(1)作用:给对象的数据进行初始化
(2)格式:权限修饰符 与类名相同的方法名(参数) {}
(3)调用:通过new调用(类名 对象名=new 类名(参数))
(4)特点:方法名与类名相同,无返回值类型,无void
                    如果不提供构造方法,系统会给出默认的构造方法
                    如果提供构造方法,系统则不会再提供

程序块:
作用:跟普通方法相同
写法:可以认为程序块是一个没有修饰符,没有返回值,没有参数,没有名字的特殊方法。只有{ }用法:程序块的执行也需要调用,每次我们调用构造方法是,系统会自动为我们调用。

返回值:
事情做完之后留下的结果(1个)
若返回值类型为void,则无法接收

参数:
事情做之前,必须提供的条件(可多个)

2、类中对象的创建:
格式:
类名 对象名 = new 类名();
使用:
使用属性:对象名.变量名
Class c = new Class(); <创建一个叫c的对象>
c.name; <调用name属性>

使用方法:对象名.方法名
Class c = new Class(); <创建一个叫c的对象>
c.eat(); <调用eat方法>

(二)成员变量和局部变量

区别:

1、在类中的位置不同:成员变量指的是属性,在类范围内定义的变量
                                      局部变量是在一个方法内定义的变量
2、在内存中的位置不同:成员变量在堆内存中
                                          局部变量在栈内存中
3、生命周期不同:成员变量随着对象的创建而存在,随着对象的消失而消失
                               局部变量随着方法的调用而存在,随着方法的调用完毕而消失
4、初始化值不同:成员变量有默认初始化值
                               局部变量没有默认初始化值,必须定义,赋值,然后才可以使用
5、注意事项:局部变量名称和成员变量名称可以相同,但在方法中使用时,采用的时就近原则

(三)关键字

1、this和super关键字:

(1)this关键字:代表本类对应的引用
         super关键字:代表父类存储空间的引用
(2)this可以调用方法,属性
         super也可调用方法,属性
(3)this必须在构造方法调用另外一个构造方法,以this();的形式,省略名字且必须在第一行,不可来回调用

2、权限修饰符关键字:

(1)种类:
|public|protected|默认不写|private| 
|公开的|受保护的|默认的|私有的|

(2)private介绍:
可以修饰成员(属性和方法)
被private修饰的成员只有在本类中才能访问

3、特征修饰符关键字

(1)种类:
|final|static|abstract|native|
|最终的|静态的|抽象的|本地的|

(2)final介绍:
1.修饰变量:如果定义变量时无初始值,只给一次赋值机会
如果变量为基本类型,则值不让更改
如果变量为引用类型,则地址引用不可改变
2. 修饰属性:用final修饰必须赋初始值
3. 修饰方法:用final修饰,要求不可被子类重写
4. 修饰类:用final修饰,此类不可被其他子类所继承

(3)static介绍:
1.可以修饰变量、属性、方法、类
2. 特点:
静态区在类加载时已初始化
静态元素只加载一次,全部类对象及本身共享
可通过类名直接调用
非静态成员和静态成员均可访问静态成员
静态不可访问非静态
静态元素不可出现this和super

(4)abstract介绍(暂时不细说)
abstract既可以表示一个关键字,也可以表示为一个类,抽象类
类的初始化过程:
Student s = new Student();s对象的创建在内存中做了哪些事情?
1.加载Student.class进内存
2.在栈内存内为s开辟空间
3.在堆内存内为学生对象开辟空间
4.对学生对象的成员变量进行默认初始化
5.对学生对象的成员变量进行显示初始化
6.通过构造方法对学生对象的成员变量赋值
7.学生对象初始化完毕,把对象地址赋值给s变量

二、接口(interface)

(一)特点:
1、接口用关键字interface表示
interface 接口名 {}

2、接口一般用来制定规则

3、类实现接口用implements表示
class 类名 implements 接口名 {}

4、接口的子类
可以是抽象类,但是意义不大
可以是具体类,要重写(override)接口中所有的抽象方法

5、接口不可实例化,按照多态的方式来实例化

(二)成员的特点:

1、成员变量:只能是常量,并且是公有的静态的
*默认修饰符:public static final
2、构造方法:接口没有构造函数
3、成员方法:只能是抽象方法,并且是公有的
*默认修饰符:public abstract
注意:接口无法创建对象,只能通过子类多实现来做事
public class A implements B {}
或者
public class A implements B,C,D {}

(三)类与类:
类与类之间继承关系,只有单继承,但可以多层继承

(四)类与接口:
实现关系,可以单实现,也可以多实现,并且还可以在继承一个类的同时实现多个接口

(五)接口与接口:
继承关系,可以单继承,也可以多继承

三、抽象类与接口的区别

(一)成员区别
抽象类:
成员变量可以为变量,也可以为常量
构造方法有 成员方法可以抽象,也可以非抽象
接口:
成员变量只可以为常量
成员方法只可以为抽象 

(二)关系区别:
类与类:继承,单继承
类与接口:实现,单实现,多实现
接口与接口:继承,单继承,多继承

(三)设计理念区别:
抽象类:被继承体现的是“is a”的关系,抽象类肿定义的是该继承体系的共性功能
接口:被实现体现的是“like a”的关系,接口中定义的是该继承体系的扩展功能

(四)形式参数区别:
引用类型:
类:需要的是该类的对象
抽象类:需要的是该抽象类的子类对象
接口:需要的是该接口的实现类对象

(五)返回值类型区别:
引用类型:
类:返回的是该类的对象
抽象类:返回的是该抽象类的子类对象
接口:返回的是该接口的实现类对象                                

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Java接口Java编程语言中的两种主要构造,它们有一些区别和用途。 1. 定义:Java是一种用于封装数据和行为的蓝图或模板,可以创建对象。接口是一种抽象型,用于定义应该实现的方法和常量的契约。 2. 继承:Java支持单继承,即一个只能直接继承自一个父接口支持多继承,一个可以实现多个接口。 3. 实现:Java通过关键字 "extends" 来继承另一个接口通过关键字 "implements" 来实现一个或多个接口。 4. 方法:Java可以包含成员变量、方法和构造函数。接口只能包含抽象方法、默认方法和静态方法,不能包含实例变量和构造函数。 5. 访问修饰符:Java中的成员可以使用不同的访问修饰符(如public、private、protected)来控制对其的访问。接口中的方法默认为public,并且不能使用private或protected修饰符。 6. 实例化:Java可以被实例化为对象。接口不能被直接实例化,但可以通过实现接口来创建接口的实例。 7. 多态性:Java的对象可以以其基接口型进行引用,实现多态性。接口可以被用作多态引用的型。 总结来说,Java用于创建对象,封装数据和行为,支持继承和实例化;接口用于定义契约,规定应该实现的方法和常量,支持多继承和多态性。使用接口的选择取决于具体的需求和设计。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

z.haoui

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

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

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

打赏作者

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

抵扣说明:

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

余额充值