1.类和对象有什么区别
- Java的类用class关键字定义,它代表了一种抽象的集合,例如,动物类,植物类,在它里边可以定义各种属性和方法,它们代表了每个类实例的特定的数据和动作。Java虚拟机只对类加载一次,对他的静态成员也只加载一次。
- 对象指的是某一特定抽象的实例,它属于某一种类型,是通过类来创建的。它必须属于某一个类,通过new关键字创建,它代表一个特定类型的实例,对象可以被多次创建。
2.Java中如何使用继承来重用代码
java中使用单继承制,使用extends关键字,通过继承之后,子类就拥有了父类除开私有成员以外的所有成员,从而达到代码重用的目的。再继承过程中,可以通过方法的覆盖来实现多态,让子类拥有自己独特的方法实现方式。
深入解析:
一继承的理解:
继承是面向对象的三大特性之一,是java中实现代码重用的重要手段之一。Java中所有的类都是通过直接或间接地继承java.lang.Object类得到的。继承而得到的类称为子类,被继承的类称为父类。子类不能继承父类中访问权限为private的成员变量和方法。子类可以重写父类的方法,及命名与父类同名的成员变量。但Java不支持多重继承,即一个类从多个超类派生的能力。
二.继承相关
1.继承public和protected修饰的属性和方法,无论子类和父类是否在同一个包中。
2.继承默认权限修饰符(friendly)修饰的属性和方法,但子类和父类必须在同一个包中。
3.无法继承private修饰的属性和方法。
4.无法继承父类的构造方法。
5.子类继承了其父类中不是私有的成员变量和成员方法,作为自己的成员变量和方法
6.子类中定义的成员变量和父类中定义的成员变量相同时,则父类中的成员变量被隐藏
三.访问修饰符访问权限。
四.子类满足重写父类方法的要求。
01.重写方法和被重写方法必须具有相同的方法名。
02.重写方法和被重写方法必须具有相同的参数列表。
03.重写方法的返回值类型必须和被重写方法的返回值类型相同或是其子类。
04.重写方法不能缩小被重写方法的访问权限。
五.重写方法和重载有什么区别和联系。
解析:重载涉及同一个类中的同名方法,要求方法名相同,要求参数列表不同,与返回值类型,访问修饰符无关,而重写涉及的是子类和父类之间的同名方法,要求方法名称相同,参数列表相同,
返回值类型相同,访问修饰符不能严于父类。
六.super关键字的用途。
super代表对当前对象的之前直接父类对象的默认引用。在子类中可以通过super关键字来访问分类的成员。
注意点:
1.super必须出现在子类(子类的方法和构造方法)中,而不是其他位置。
2.可以访问父类的成员,如父类的属性,方法,构造方法。
3.注意访问权限的限制,如无法通过super访问private成员。
相关博客:继承容易犯的错误
3.简述Java中的多态
【答案】:“多态”按字面来理解为“多种形式,多种状态”。它的本质是,发送消息给某个对象,让对象自行决定响应哪种行为。
多态的定义:指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。
java中的多态详解
4.介绍Java中静态成员的特点
【答案】类的静态成员是通过static关键字修饰的成员,主要包括:静态成员变量、静态方法和静态代码块、它们具有以下一些特点。
- 在类加载的时候,就进行创类和初始化或执行代码。
- 他们对于一个类来说是独一份的。
- 类的所有实例都可以访问到他们。
静态成员分析
5.简书Java派生类中的构造方法如何为父类传递参数
【答案】
在Java中,使用super关键字加括号()的形式来为父类的构造方法提供参数,通过参数的数目和类型来决定调用哪一个构造方法。如果调用的是父类的默认无参构造方法,则可以不用显示调用super()方法。
代码示例:
class Animal{
public Animal(String s) {
System.out.println("我是:"+s);
}
public void eat() {
System.out.println("动物具有吃的能力");
}
}
class Dog extends Animal{
public Dog() {
super("动物");
}
public void eat() {
super.eat();
}
}
public class ExtendsTest {
public static void main(String[] args) {
Dog dog=new Dog();
dog.eat();
}
}