java 基础命令3

1.java之支持单继承,单继承使JAVA的继承关系很简单,一个类只能有一个父类,易于管理程序,同时一个类可以实现多个接口,从而克服单继承的缺点。

2.java中容许多重继承(子继承父,孙继承子),子类继承的时候是直接继承了父类中的非私有属性和非私有方法,而隐含的继承了父类中的私有属性(子类通过接口可以访问父类的私有属性和私有方法)。

3.子类对象在实例化时先调用父类的无参构造方法,然后再调用子类的构造方法,(实际上子类在继承父类之前,必须确保父类所有东西都初始化完毕了,这样在子类的构造方法中就隐含了一个:super()的代码)

4.面试一:解释一下方法的覆写与方法的重载的区别
重载:方法的名称相同,各参数的类型或个数不同,发生在一个类中。
覆写:方法名称相同,参数的类型或个数相同,方法的访问权限不能更严格。是发生在继承关系中,由子类进行覆写的。
面试二:super与this的区别
super:是由子类访问父类的内容,super.父类属性,如果属性没有被覆写,则也可以不写super,。super.父类方法(),如果方法没有被覆写,则可以不加super也表示调用父类中的方法。super是访问父类中的构造方法,必须放在行首。
this:直接访问本类中的内容,this.本类属性,this.本类方法(),可以不写this,也表示调用本类的方法。this是访问本类中的其他构造方法,必须放在行首。this表示当前对象,当前操作方法的对象就是当前对象。

5.属性一般情况下都要求被封装的,被封装之后肯定子类是无法看见父类中的内容,所以根本就无法覆写。

6.super与this调用构造方法能同时写在一个构造方法之中吗?答案是不行哈~
Super调用构造方法时,一定要放在构造方法的首行,this调用构造方法时也必须放在首行,如果两个都放在首行,则肯定冲突。
7.final关键字
被final标记的类不能被继承
被final标记的方法不能被子类覆写
被final标记的变量就成为常量,如果成为常量,则以后不能修改
8.变量声明规则:
之前在声明变量的时候是第一个单词的首字母小写,之后每个单词的首字母大写。如果使用final声明常量,则所有单词的字母都要大写。
9.
· static:是所有对象共享的
· final:是一个常量
· public:表示可以让外部看见
10.抽象类:包含一个抽象方法的类就称为抽象类。
抽象方法:只声明而未实现的方法称为抽象方法。
方法没有方法体(方法体:“{}”),则称为是一个抽象方法。
除了抽象方法之外其他的定义如同普通类一样。
抽象类 = 普通类的功能 + 抽象方法
11.如果要使用一个抽象类,不能直接实例化,抽象类是必须有子类的。
抽象类必须被继承,被继承的子类如果不是一个抽象类的话,则肯定(必须)要覆写全部的抽象方法。
12.抽象类和抽象方法必须由abstract关键字来修饰。
13.抽象类中允许有构造方法,但是此构造方法并不是直接实例化抽象类自己的对象使的,如果在抽象类中没有明确的无参构造方法,即:存在有参构造,则必须在子类明确的使用super指明要调用父类中的那个构造方法。
14.注意:
如果一个抽象类中没有任何一个抽象方法,则也是不能直接实例化的。(只要类被abstract修饰,就不能被直接实例化)
15.abstract不能和final组合使用。就是说final不能修饰抽象类。
16.一个子类继承接口实际上称为实现了接口。
如果实现接口的子类不是抽象类的话,则子类必须覆写接口中的全部抽象方法。
17.如果一个子类即要实现一个接口又要继承一个抽象类呢?
则此时按以下格式编写:
class 类名称 extends 抽象类 implements 接口
18.Java规定子类和父类之间是单继承,每个子类只能有一个父类,而一个父类可以有多个子类。
19.接口可以继承多个接口(例:interface C extends A,B )
20.抽象类更多的是用来定义模板的。
21.证明接口对象可以实例化,通过对象多态性进行向上转型,接口是可以实例化的。
例:interface A   
{   
        public String getInfo();   
}   
class B implements A   
{   
        public String getInfo()   
        {   
                return "B --> Hello World";   
        }   
}   
class C implements A   
{   
        public String getInfo()   
        {   
                return "C --> Hello World";   
        }   
}   
public class Demo04   
{   
        public static void main(String args[])   
        {   
                A a = new B();   
                System.out.println(a.getInfo());   
        }   
}
22.接口的重要目的是解耦合:   A --> B
23.可以通过对象的多态性,为父类实例化,之后一切的操作标准以父类为主。
24.一个抽象类中可以包含一个接口,之后在抽象类的子类中可以有选择的是否实现抽象类中的接口。
例:abstract class A   
{   
        public abstract void fun();   
        interface B   
        {   
                public void print();   
        }   
}   
class X extends A   
{   
        //覆写父类fun()方法   
        public void fun()   
        {   
                B b = new Y();   
                b.print();   
        }   
        class Y implements B   
        {   
                //覆写父类接口中的方法print()   
                public void print()   
                {   
                System.out.println("Hello Java!!!");   
                }   
        }   
}   
public class Demo01   
{   
        public static void main(String args[])   
        {   
                A a = new X();   
                a.fun();   
        }   
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值