学习之路Day10

本文详细探讨了final关键字在Java中的应用,包括类、方法、变量的修饰,接口的概念及其实现,以及多态与向上/向下转型。重点讲解了final修饰变量的特性,接口与抽象类的区别,以及JDK8后新增的默认方法和静态方法。
摘要由CSDN通过智能技术生成

final关键字

最终修饰符,可以修饰类/方法/变量

修饰类,类不能被继承

修饰方法,方法不能被重写

修饰变量,变量只能被赋值一次,表示常量

final修饰引用类型变量,变量的地址不能改变,属性值可以更改

final Person p = new Person();

p = new Person();//报错,地址值改变

p.name = "张三";

p.name = "李四";//属性值可以改变

final修饰成员变量,不能使用默认值,必须在创建对象之前赋值

public class Person{

final int a = 10;//直接显示赋值

final int b;

public Person(){//构造方法赋值,所有的构造方法必须赋值

b = 10;

}

public Person(参数){

b = 20;

}

}

接口

概念:接口就是功能的集合,接口中都是抽象方法;

接口的定义格式:

public interface 接口名{

抽象方法;

}

接口的使用:

1.接口不能直接创建对象

2.定义实现类实现接口

3.重写接口中所有的抽象方法

4.创建实现类的对象,调用重写的方法

接口的成员特点:

1.接口中没有构造方法

2.接口中的成员变量都是常量 ,public static final修饰(默认修饰符)

3.接口中的成员方法都是抽象方法,被Public abstract修饰(默认修饰符)

接口的特点:

1.类可以实现接口,既可以单实现,也可以多实现

2.类可以在继承一个类的同时,实现多个接口

3.接口与接口时继承关系,既可以单继承,也可以多继承

接口与抽象类的区别:

成员变量: 抽象类中成员变量可以是变量/常量

接口中的成员变量只能是常量

构造方法: 接口中没有构造方法

抽象类中有构造方法,供子类使用

成员方法:接口中的成员方法都是抽象的(jdk1.8之后,增加了默认方法,和静态方法)

抽象类中成员方法既可以是抽象的,也可以是具体的,

理念上的不同:类描述是一类事物的共性内容

接口描述的是体系外的额外功能

JDK8之后的方法:

public interface 接口名{

//默认方法,子类可以重写,可以不重写;但是当实现多个接口时,需要重写,不然会报错;

public default 返回值类型 方法名(){}

//静态方法 接口名.方法名();

public static 返回值类型 方法名(){}

} 多态

概念:一类事物在不同时刻的多种形态,Java作为面向对象语言描述了这种形态;

最终体现为:父类引用指向子类对象;

多态的格式,必须有继承或是实现关系才可以使用多态

具体类:

具体父类 对象名 = new 子类();

抽象类:

抽象类 对象名 = new 继承类();

接口:

接口 对象名 = new 实现类();

多态后访问成员的特点:

成员变量:

编译时,先找父类中的成员变量,如果有编译通过,否则报错

运行时,直接打印这个成员变量的值

成员方法:

编译时,先找父类中的成员方法,如果有编译通过,否则报错

运行时,运行的是子类重写后的方法,如果子类没有重写,运行父类中的方法

多态后,一般表现都是父类表现,只有方法运行的是重写后的方法;

Public class Fu{

int a = 1;

public void method(){

System.out.println("父类中的方法");

}

}

Public class Zi extends Fu{

int a = 2;

public void method(){

System.out.println("子类中的方法");

}

}

Fu fz = new Zi();

System.out.println(fz.a);//1

System.out.println(fz.method()),//子类中的方法

向上转型(自动类型提升)

int a = 10;

double d = a;

//多态就是向上转型;

Zi zi = new Zi();

Fu fz = zi;

向下转型(强制类型转换)

double d = 10.1;

int i = (int)d;

//多态后不能访问子类特有的功能

//需要向下转型,才可访问

Fu fz = new Zi();

Zi zi = (Zi)fz;

boolean 变量名 = 对象 instanceof 类型

判断某个对象,是否属于某个类型,如果属于,返回true,不属于返回false

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值