java面试知识点汇总4

子类继承性的权限:
1.子类和父类在同一包下:
子类自然地继承了父类中不是private的成员变量和方法,并且继承的变量和方法的访问权限保持不变。
2.子类和父类不在同一包下的继承性:
子类继承父类中protected和public修饰的成员变量和方法,继承后变量和方法的访问权限保持不变。
---------------------------------------------------------------------------------------------------------------------------------------
注意:子类不能继承父类的友好的变量和方法。

子类对象的构造过程 --- 内存分配见图
使用子类的构造方法来创建一个对象的时候,子类的构造方法总是先调用父类的构造方法,
如果子类的构造方法中没有指明调用父类中的哪个构造方法,默认调用父类无参的构造方法。

子类因为不能继承父类中被private修饰的变量,所以在子类自己新定义的方法中也就不能直接
操作该变量,但是可以通过调用父类的与该变量有关的非private修饰的方法来间接地对该变量
进行操作。

继承下的变量隐藏和方法重写:
变量隐藏:在子类中定义和父类中同名的成员变量,类型不必相同,子类就隐藏了继承的成员变量,
          那么子类对象调用该变量调用的一定是隐藏之后的变量。
          但是子类仍然可以使用从父类继承的方法来操作被隐藏的父类中的变量。
          在变量隐藏情况下如何访问被隐藏的变量:
          1.通过调用父类的没有被重写的方法(正常继承自父类的方法)来操作被隐藏的变量
          2.通过super来调用被隐藏的方法时,在该方法中出现的成员变量是指被隐藏的变量。
          2.使用关键字super
方法重写:有继承才有重写!!!
          重写父类的方法时不可以降低方法的访问权限,
          权限修饰符的级别(小-->大):private -- 友好 -- protected -- public
          但是隐藏父类的变量时权限可大可小。          
          方法重写之后,子类调用该方法,调用的一定是重写之后的方法,
          如果子类如果想使用被隐藏(又叫重写)的方法,必须使用关键字super。



权限修饰符的作用:
1.限制类对象在其他类中对自己变量和方法调用的控制
2.限制子类在继承父类时,哪些可以被继承哪些不可以被继承。


关键字super的2种用法:
1.使用super调用父类的构造方法。
  子类不继承父类的构造方法,所以子类如果要调用父类的构造方法,必须使用super关键字来表示,并且super必须是子类构造方法中的第一条语句。
  如果在子类的构造方法中,没有使用关键字super调用父类的某个构造方法,默认有:super();语句,即默认调用父类不带参数的构造方法,这就要
  求父类必须提供不带参数的构造方法。
2.使用super调用被子类隐藏的变量和方法。
  super调用的隐藏的方法中如果有被隐藏的变量,那么操作的是被隐藏的变量,而不是隐藏之后的变量。

-------------------------------------------------------------------------------------------------
对象的上转型对象
前提:B是A的子类或者间接子类,用子类B创建一个对象,并把这个对象的引用放到类A声明的对象中时,如:
A a;
B b = new B();
a = b;
或者
A a;
a = new B();
以上两种方式创建的a就是子类对象b的上转型对象。
注意:父类对象的引用不可以直接赋值给子类对象,但子类对象的引用可以赋值给父类对象,即就是上转型对象。

对象的上转型对象的实体是子类负责创建的,但上转型对象会失去原子类对象的一些新增添的属性和功能。
上转型对象的特点:
上转型对象不是父类创建的对象,而是子类对象的“简化”形态,
它不关心子类新增添的功能,只关心子类继承和重写的功能,即:
上转型对象不可以调用子类自己增添的新变量和新方法,只能调用子类继承的成员变量和隐藏的成员变量,以及子类继承的方法和重写的方法。
要让子类对象恢复对所有属性和方法的调用,可以将上转型对象再强转为一个子类对象,如:B b = (B)a;

--------------------------------------------------------------------------------------------------------
继承与多态:
与继承有关的多态:
条件:
1.一个父类被多个子类同时继承。
2.多个子类均对父类的某一个方法进行了重写。
3.用子类的上转型对象去调用这些重写的方法时就会具有多种形态。
代码如下:
package com.gpf.qianfeng;

public class Duotai {
public static void main(String[] args) {
Animal animal;
animal = new Dog();//animal是Dog对象的上转型对象
animal.cry();
animal = new Cat();//animal是Cat对象的上转型对象
animal.cry();
}
}
class Animal{
void cry(){
System.out.println("喔噢!!");
}
}
class Dog extends Animal{
void cry(){
System.out.println("汪汪汪!!!");
}
}
class Cat extends Animal{
void cry(){
System.out.println("喵喵喵!!!");
}
}
打印结果:
汪汪汪!!!
喵喵喵!!!
---------------------------------------------------------------------------------------------------------------------
抽象类:抽象类不可以直接new对象,abstract不能和static同时出现,static关键字只能出现在类体中。

1.在面向对象中我们度知道对象是通过类来描述的,但是反过来却不是这样,并不是所有的类度是用来描述对象,
  如果一个类中没有包含足够的信息来描述一个具体的对象,这样的类就是抽象类。
2.抽象类的使用场景:有些功能没有一个统一的实现,必须依赖子类的具体实现,而有些功能又可以被所有子类
  共享,那么此时就可以使用抽象类。

使用关键字abstract修饰的类称为抽象类。如:abstract class {...}
抽象类只能被继承,继承它的子类重写它的抽象方法,完善它。
1.抽象类中可以有抽象方法,也可以有非抽象的方法,其中抽象方法只允许声明,不允许实现。
  注意:不允许使用final和abstract同时修饰一个类,因为抽象类要在继承中被子类重写以变的完善,如果
        使用final修饰,那么就不允许子类继承了,也就永远不会得到完善。
  含抽象方法的类一定为抽象类,但抽象类中不一定必须包含抽象方法。
2.抽象类不能new对象,抽象类的非抽象子类必须重写它的全部抽象方法,如果没有重写全部的抽象方法,那么该子类依然为抽象类。
  抽象子类继承抽象父类,它可以重写父类的抽象方法,也可以继承这个抽象方法。

----------------------------------------------------------------------------------------------------------------------
接口:
一个类可以实现多个接口,但只能继承一个父类。 
接口中包含常量定义和方法定义,并且只进行方法的声明,不允许提供方法的实现,如下:
interface Jiekou{
   final int MAX = 1000;
   void add();//接口中的方法默认使用public和abstract同时修饰
   float sum(float x,float y);
}
同时实现多个接口:
class A extends  B implements C,D,E
接口之间可以相互继承,如果父类实现了某个接口,那么子类也就自然的实现了该接口。

1.如果一个类实现某个接口,那么这个类必须实现接口中的全部方法,类在实现接口方法时,一定要用public修饰。
2.
































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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智玲君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值