面向对象 第六课 类的高级概念

final修饰类方法 代表类方法属于最终方法,不能重写。


访问修饰符
类及其每一个成员(包括成员变量、方法和构造器)都有一个访问修饰符,用来判断谁谁可以访问该成员。


java为类中的成员提供了四种访问级别,按照访问权限由大到小排列如下:
1>公开访问级别:使用public关键字修饰符,用public关键字修士的成员对外公开,即公开成员可以被任何其他对象访问。
2>受保护访问级别:使用protected关键字修饰。受保护的成员可以被同一包中的类所访问,还可以被类的子类所访问,不管子类在哪个包中。
3>默认访问级别:没有访问修饰符。默认访问级别的任成员可以被同一包中的其他类所访问。
4>私有访问级别:使用private关键字修饰。它是四种访问修饰符中级别最低的。私有成员只有类本身可以访问,不对外公开。


*****
public:java语言中访问权限最宽的修饰符,一般称为“公共的”。被其修饰的类、属性以及方法,不仅可以跨类访问,而且允许跨包访问。


protected:介于public和private之间的一种访问修饰符。一般称为“保护的”。被其修饰的类、属性以及方法,只能被类本身的方法及子类访问。即使子类在不同


的包中也可以访问。


默认修饰符(即不加任何访问修饰符):通常称为默认访问模式。该模式下,只允许在同一个包中进行访问。


private:java语言中对方问权限限制的最窄的修饰符,一般称为“私有的”。被其修饰的类、属性以及方法只能被该类的对象访问,其子类不能访问,更不能跨包访


问。


我们一般的类都是使用public修饰,private和protected一般用来变量和方法。


封装
封装是面向对象技术的重要原则,它是java三大特性(封装、继承和多态)之一。java就是通过封装把对象的属性和方法结合为一个不可分割的独立整体,并尽可能


的隐藏对象的内部实现细节,只保留一些对外接口使之与外部发生联系。系统的其他对象只能通过它提供的对外接口来与这个封装的对象进行交互,而无需知道该对


象内部的细节。


封装的作用(好处):
1>良好的封装能够减少代码耦合(面向对象的设计原则:高内聚、低耦合);
2>类内部的结构可以自由修改,而不影响类的外部使用者;
3>可以对类的成员数据(成员变量和方法)进行更精确地控制;
4>能更好的隐藏类的成员数据和实现细节。


get(访问器)和set(修改器)方法


get和set的作用:
用private/protected/default/public这四个访问修饰符修饰对象的属性和方法,则设置了类相应的属性和想法的访问权限。private修饰符修饰的属性和方法只能自


己访问。当一些特殊情况下,允许被访问时,我们使用get方法和set方法。


静态类成员


static修饰的成员变量叫静态变量,也叫类变量,类变量的值为所有对象所共享


static修饰的方法叫静态方法,即类方法,类方法只能使用静态变量,而不能使用非静态的全局变量。


类的静态成员变量和方法的特点:
类的静态成员变量和方法属于类,而不是类的实例化对象。类的静态成员变量只存储一份数据供所有对象公用,这份数据伴随着类的加载,在内存中开辟空间保存。


使用静态成员变量和方法可以实现多个对象之间的数据共享,而不会破坏封装(数据隐藏)的原则,这不但保证了安全性,而且节省了内存空间。


使用类的成员变量和静态方法不需要类实例化对象,可以通过如下方式访问:
类名.静态成员变量
类名.静态方法


类的静态成员变量和静态方法使用注意事项:
1>类的静态方法中不能调用非静态方法和非静态成员变量(也不能使用this和super);
2>类的非静态方法中可以静态方法和静态成员变量;


静态初始化块
除了声明静态成员变量和方法外,关键字static还有另外一种用法。java类可以包含一个静态初始化块,静态初始化块是一组当类被JVM的类加载器加载时执行的语句



public class 类{
    static {
        //语句
    }
}


实例初始化块
实例初始化块与静态初始化块类似,它在类的对象每实例化时执行一次。


实例初始化块和构造器二者之间的不同之处在于实例初始化块在构造器调用之前执行。


public class 类{
    {
        //语句
    }


}


java中静态初始化块、实力初始化块和构造器三者都是用来完成类的初始化工作。
在实际的编程中,可以根据不同的需要使用不同的初始化方式。而如何选择关键在于三种方式的执行先后顺序。


静态初始化块在类被JVM的类加载器加载时被执行,实例初始化块和构造器是在类实例化对象时才被执行。故父类和子类的静态初始化块最早执行,且前者早于后者;


实例初始化块与构造器执行顺序,同样是前者早于后者。


父类静态初始化块-->子类静态初始化块-->父类实例初始化块-->父类构造器-->子类实例初始化块-->子类构造器


内部类
在java中,还可以在类的内部定义类。这种在类的内部定义的类,称为内部类。内部类所在的类称为外部类


特点:
独立的一个class文件
同样需要编译
同样可以产生对象


学会使用内部类,是掌握java高级编程的一部分,它可以让你更
优雅的设计你的程序结构。


内部类属于java高级编程的内容,使用非常灵活,掌握难度比较大。但合理使用它可以编写出更为优雅和高效的程序。


java中的内部类共分为四种:


1>静态内部类:这是最简单的内部类形式,定义在另一个类中,同时加上static关键字,它不能和外部类同名。它只可以访问外部类的静态成员变量和静态方法(包


括私有的静态成员变量和方法)。


实例化静态内部类的方式:
OuterClass.InnerClass inner = new OuterClass.InnerClass();


2>成员内部类:同静态内部类相同,也是定义在另一个类中,但是定义时不用static关键字,它可以访问外部类的所有成员变量和方法(包括静态和非静态)。


实例化成员内部类的方式:
OuterClass.InnerClass inner = (new OuterClass()).new InnerClass();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值