关于this,super,final,static,访问修饰符以及面向对象等Java测题

面向对象的特征有哪些方面?

面向对象有封装、继承、抽象、多态等4个主要的特征。
1.封装:保证软件部件具有优良的模块性的基础。
封装的目标就是要实现软件部件的“高内聚,低耦合”,在面向对象的编程语言中,对象是封装的最基本单位。

面向对象的封装就是把描述一个对象的属性和行为的代码封装在一个“模块”中,即一个类中。属性用变量定义,行为用方法定义,方法可以直接访问同一个对象中的属性。

2.抽象:找出一些事物的相似和共性之处,然后将这些事物归为一个类,这个类只考虑这些事物的相似和共性之处。

// 声明一个person类
 		class person{
 		//设定姓名,年龄两个属性
			 String name;
			 int age;
		}

人具有很多方面的属性,但现在我们仅需要name,age属性即可,姓名和年龄每个人都具有,那么就将这两个属性归为person类中。
3.继承:在定义和实现一个类的时候,可以在一个已经存在的类的基础上进行。即,将一个已经存在的类作为父类,我们再定义一个类为子类,子类可以在父类的基础上加入新的定义,或根据子类本身需求,定义自己的行为(重写)。
4.多态:指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用,在编程时并不确定,而是在程序运行时才确定下来的,这样不用修改源程序代码,就可以让引用变量绑定到各种不同的类实现上,使得该引用调用的具体方法随之改变,让程序选择多个运行状态,即为多态性。
简而言之,就是接口的多种不同的实现方式即为多态。

可以想象一下:
一台电脑(一个接口)连接两台打印机,一台为彩印,另外一台为黑白(即两种实现方式)

面向对象编程有3大特性:继承、封装、多态

访问控制修饰符有哪几个,并说说它们之间的区别?

访问控制修饰符有:
public,公共变量,整个程序运行过程中都可用
private,私有变量,只有当前类内可直接访问
protected,受保护变量,类内和子类可直接访问
类的成员不写访问修饰时默认为default

访问修饰符

Java数据类型

在这里插入图片描述

final有什么用?

final是Java中得关键字,可用于修饰类、变量和方法

final修饰的类不能被继承
final修饰的方法不能被子类重写
final修饰的变量(成员变量和局部变量)是常量,只能赋值一次

this关键字的用法

指当前对象或类实例的,用来获取成员。
1.this关键字调用成员变量,解决局部变量名称冲突问题

	class Person{
		int age; //成员变量
		public Person(int age){ //局部变量
		this.age=age;  //局部变量的值赋给成员变量
	}
}

2.this关键字调用成员方法

	class Person{
		public void Food(){
			...
		}
		public void Eat(){
		this.food();  //此处的this也可以省略不写
		}
}

3.this关键字调用构造方法

	class Person{
		public Person(){
			System.out.println("无参");
		}    //无参构造方法
		
		public Person(int age;){  //有参构造
		this();  //调用无参构造方法
		System.out.println("有参");
		}
}
pubic class Test{
	public static void main(String[] args){
		Person p=new person(10);  //实例化Person对象
	}
}

使用this调用类的构造方法时,应注意
1. this调用其他的构造方法只能在构造方法中使用,不能在成员方法中使用
2. this调用构造方法的语句必须时该方法的第一条执行语句
3. 不能在一个类的两个构造方法中使用this互相调用

super关键字的用法

当子类重写父类的方法后,子类对象将无法直接访问父类被重写的方法,在Java中则专门提供了super关键字访问父类的成员。

  1. 使用super关键字调用父类的成员变量和成员方法

super.成员变量
super.成员方法([参数1,参数2,……])

  1. 使用super关键字调用父类的构造方法

super([参数1,参数2,……])

this和super的区别

super() 从子类中调用父类的构造方法
this() 在同一类中调用其他方法
相同点:super()和this()均需放在构造方法内的第一行

static存在的意义

在于创建独立于具体对象的域变量或方法,以致于即使没有创建对象也可以使用属性和调用方法。

static关键字是用来形成静态代码块以优化程序性能
static可以置于类中的任何地方,类中可以有多个static块。
在类初次被加载时,会按照static块的顺序执行每个static块,并且只会被执行一次。

static的独特之处:

  1. static修饰的变量或方法独立于该类的任何对象,这些变量和方法不属于任何一个实例对象,而是被类的实例对象所共享。
  2. 在该类被第一次加载的时候,就会去加载被static修饰的部分,而且只在类第一次使用时加载并进行初始化,后面根据需要可以再次赋值。
  3. static变量值在类加载的时候分配空间,以后创建类对象的时候不会重新分配,赋值是可以任意赋值的。
  4. 被static修饰的变量或者方法是优先于对象存在的。即当一个类加载后,即使没有创建对象,也可以访问。
    static的应用场景:
    1.修饰成员变量
    2.修饰成员方法
    3.静态代码块
    4.修饰类(只能修饰静态内部类)
    5.静态导包

Java小白,欢迎指正~

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值