1.什么是final?final关键字的特点
final:是状态修饰符,最终的,无法更改的!
可以修饰类,该类不能被继承
可以修饰成员方法,该方法不能被重写
可以修饰变量,此时变量是一个常量
一般情况:定义常量
public static final 数据类型 变量名 = 初始化;
2.final修饰基本数据类型和引用数据类型的区别
//可以修饰基本数据类型:(普通方式: final int a = xx ;),基本数据类型对应的值不能再赋值了;
//可以修饰引用数据类型: final 修饰实例变量,该对象的地址值不能在改变了!
final Person p = new Person() ;
//p = new Person() ; 报错
3.方法重写和方法重载的区别
方法重载:Overload
在一个类中,定义多个方法,这些方法的方法名相同,参数列表不同,与返回值无关;
参数列表:
1)数据类型不同
2)参数个数不同
3)先后顺序
重载的目的:为了提高功能的扩展性:同一个方法可以接收很多类型的参数
方法重写:Override
在继承关系中,子类出现了和父类一模一样的方法,这个子类将父类的功能覆盖(复写/重写),创建子类具体对象,
直接方法该功能,使用的子类的功能!
重写的目的:为了沿用父类的功能,并且还需要使用子类的功能(具体的子类才具备具体的动作...)
实际开发中: 有的时候需要将api提供一些功能进行重写,完成我们自己的业务需求!
后期使用:Servlet(server applet:针对服务端程序开发 :前后端的交互) JavaEE核心技术之一
4.this和super有什么区别?
this:代表当前类对象的地址值引用
super:代表的父类的空间标识(代表父类对象的地址值引用)
访问成员变量,成员方法,构造方法
成员变量:
this.变量名; 它的访问的是本类的成员变量
super.变量名; 访问父类的成员变量
成员方法:
this.方法名() ;访问本类的成员方法
super.方法名() ;访问父类的成员方法
构造方法:
this() ;访问的是本类的无参构造方法
super() ;访问的是父类的无参构造方法
this(具体值) ;访问的是本类的有参构造方法
super(具体值);访问的是父类的有参构造方法
5.什么是多态,多态的成员访问特点?
/*
多态:一个事物在不同时刻体现的不同形态
前提条件:
1)必须继承关系
2)必须存在方法重写
3)必须父类引用指向子类对象
Fu f = new Zi() ;
成员访问特点:
1)成员变量:编译看左,运行看左
2)成员方法:(非静态):编译看左,运行看右,(存在方法重写)
3)静态的方法:不算方法重写,跟类相关(编译看左,运行看左)
4)构造方法:分层初始化(先父类,在子类)
*/
class Person{
public static int a = 100 ; //类变量
public static void eat(){//类方法
//xxxx
}
}
class PersonTest{
public static void main(String[] args){
//创建Person对象
// Person p = new Person() ;
// p.eat() ; //idea中对应static功能,对象名打点访问,不会提示(系统认为静态方法,变量访问方式:通过类名访问,而不是对象名访问)
Person.eat();//推荐访问方式
}
}