大数据之JAVA基础(九):面向对象

一、final关键字

1.概念
继承的出现提高了代码的复用性,但也出现了新的问题,那就是,有些类不想被继承,有些类中的某个方法,某个变量不想被继承,这就需要final关键字:最终,无法被修改的意思,可以修饰变量,方法和类,是一个访问修饰符

2.特点
1)final修饰的类不能被继承,但是可以继承其他类(不能当爸,只能当儿子)
2)final修饰的方法不能被重写
3)final修饰的变量不能被修改,只能赋值一次,称为常量。
4)引用类型的对象被final修饰之后,对象的地址是不能变的,但是对象的属性值是可以改变的,只要不改变变量地址就行。例如
final Person p = new Person();
Person p2 = new Person();
p = p2; //这就是错的,编译不通过,不能修改地址
p.name = "小明"; // 这是对的,编译通过

4)成员变量被final修饰的时候,必须在创建对象的时候进行赋值,否则报错。也就是说,必须声明赋值或者构造赋值。



二.static 关键字

1.概念
static 是静态修饰符,一般用来修饰类中的成员。它可以使我们不创建对象,就调用该成员

2.特点
1)被static修饰的成员变量属于类,不属于某个对象,即所有new的对象共享同一个static变量
2)static 修饰的成员变量访问方式为:类名.静态变量 类名.静态方法

3.注意事项
1)静态内容是优先于对象存在的,只能静态访问(类名点出来),不能使用this/super访问;
2)静态修饰的内容存在于静态区;
3)同一个类中,静态成员只能访问静态成员,不能访问非静态成员,最明显的就是:静态方法中不能访问类的非静态成员;
4)主函数main虽然是静态的但是作为程序的入口,它也不属于任何一个对象,但是可以定义在任意的类中;

4.静态常量
1)格式:public static final CHANG_LIANG; //变量名全部大写,多个单词使用下划线链接;
2)注意接口中的成员变量必须是静态的,默认使用public static final 修饰,由于接口中没有构造方法,不能创建对象,所以,接口中的静态变量,通过接口.变量直接调用
例如:
interface Inter
{
public static final int COUNT = 100;
}

调用: Inter.COUNT



三、匿名关键字

1.概念
匿名对象是指创建对象是,仅仅有创建的语句new ,却没有用变量去接收,没有把new出来的对象地址传递给变量进行储存;

2.特点
1)创建匿名对象直接使用,没有变量名
2)匿名对象没有指定引用变量,只能被使用一次
3)匿名对象可以作为方法的实际传递参数和返回值使用,比如:
return new Person(); //作为方法的返回值
Demo.func(new Person()); //作为方法的实参



四、内部类

1.概念
将一个类写在其他类的内部,这样的类就是内部类。包含内部类的这个类,称为外部类

2.格式
clas 汽车 //外部类
{
class 发动机 //内部类
{

}
}

3.成员内部类
1)定义在外部类成员变量的位置,其实就是一个成员变量,可通过外部类的对象进行访问;
2)格式
class 外部类
{
public int a;
修饰符 class 内部类
{
}
}

3)访问成员内部类的方式:外部类名.内部类名 变量名 = new 外部类().new 内部类();
4)成员内部类代码展示
class Body //外部类,身体
{
private bool isAlive = true;

public class Heart //内部类
{
public void Jump //内部类的方法
{
if(isAlive) //内部类中可以直接访问外部类成员
syso("心脏在跳动");
else
syso("心脏停止跳动");
}
}
}


4.局部内部类
1)定义在外部类方法中,相当于局部变量,可以通过调用方法进行访问
2)格式
class 外部类
{
public void 方法(参数)
{
class 内部类
{

}
}
}

3)访问局部内部类的方式:在外部类的方法中,创建内部类的对象,进行访问;而且局部内部类只能在方法中才能使用,跟局部变量一样,出去方法就没有意义,仅在方法的大括号内才有意义;

4)代码演示
定义演示
class Party //外部类
{
public void puffBall() //方法吹气球
{
class Ball //内部类 气球
{
public String color; //颜色
public void puff()
{
syso("气球膨胀了");
}
}

//使用局部内部类
Ball ball = new Ball();
ball.color = "红色";
ball.puff();
}
}

public static void main(String [] args)
{
//创建外部类对象
Party p = new Party();
p.puffBall();
}


5.匿名内部类
1)说明:匿名内部类是局部内部类的一种
2)特点:临时定义某一个指定类型的子类,定义后即可创建这个子类的对象
3)格式
new 父类或者接口
{
//进行方法重写
}

4)代码演示
public abstract class Person
{
public abstract void eat();
}

public static void main(String[] args) {

Person p = new Person(){
public void eat()
{
syso("吃饭");
}
};
p.eat();
}

5)其实实质上就是将定义子类和创建子类混合在一起一次性完成;
6)匿名的好处就是可以使用匿名调用链进行快捷调用,省去声明一大堆变量的过程。
Person p = new Person(){
public void eat()
{
syso("吃饭");
}
}.eat();


6.访问修饰符
Java 中提供了四种访问权限,使用不同的访问权限时,被修饰的内容会有不同的访问权限,以下表来说明不同权限的访问能力:
 
public
protected
default
private
同一类中
同一包中 ( 子类与无关类 )
 
不同包的子类
 
 
不同包中的无关类
 
 
 
归纳一下:在日常开发过程中,编写的类、方法、成员变量的访问
要想仅能在本类中访问使用 private修饰;
要想本包中的类都可以访问不加修饰符即可;
要想本包中的类与其他包中的子类可以访问使用 protected修饰
要想所有包中的所有类都可以访问使用 public修饰。
注意:如果类用 public修饰,则类名必须与文件名相同。一个文件中只能有一个public修饰的类。


7.构造代码块
1)定义:构造代码块是定义在类中成员位置的代码块,定义在类中方法外,用来给对象中的成员初始化赋值
2)特点:
l 优先于构造方法执行,构造代码块用于执行所有对象均需要的初始化动作
每创建一个对象均会执行一次构造代码块。

8.静态代码块
1)定义静态代码块是定义在成员位置,使用 static 修饰的代码块,定义在类中方法外,用来给类的静态成员初始化赋值
2)特点:
它优先于主方法执行、优先于构造代码块执行,当以任意形式第一次使用到该类时执行。
该类不管创建多少对象,静态代码块只执行一次。
可用于给静态变量赋值,用来给类进行初始化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值