面试题笔记
2016-03-11 13:16
453 查看
(1):下面是记录了一道面试题,判断下面语句的错误,当然我贴出来的都是正确的,就是有点不太理解,敲点代码重新理解下
(1):c++中的虚类相当于java里面的抽象类
(2):c++中没有接口的概念,与之对应的是纯虚类,对应的是java中的接口
(3):纯虚函数和虚函数的区别在于前者不包含定义,而后者可以包含函数体
(4):抽象类:类中至少有一个方法是抽象方法,则该类就是抽象类了
(5):接口:类中的方法全部都是抽象方法
***(表示有点头晕了,)java中的接口与抽象类到底TM有什么区别,抽象类又有什么用?这些都是值得我们思考的。
(2):接口与抽象类的区别
(1):抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract方法;
(2):抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的
(3):接口中不能含有静态代码块及静态方法,而抽象类可以有静态代码块和静态方法
(4):一个类只能继承一个抽象类,而一个类却可以实现多个接口。
(5):抽象类是对一种事物进行抽象,即对类抽象,而接口是对行为的抽象,抽象类是对整个类进行抽象,包括属性,方法。接口是对行为进行了抽象。
(3):下面是一个抽象类的实际运用
假设学生和工人都去介绍下自己,他们介绍的内容是不一样的,相当于他们都有一个say()的方法,内容由子类的对象决定。
(1):c++中的虚类相当于java里面的抽象类
(2):c++中没有接口的概念,与之对应的是纯虚类,对应的是java中的接口
(3):纯虚函数和虚函数的区别在于前者不包含定义,而后者可以包含函数体
(4):抽象类:类中至少有一个方法是抽象方法,则该类就是抽象类了
(5):接口:类中的方法全部都是抽象方法
***(表示有点头晕了,)java中的接口与抽象类到底TM有什么区别,抽象类又有什么用?这些都是值得我们思考的。
(2):接口与抽象类的区别
(1):抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract方法;
(2):抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的
(3):接口中不能含有静态代码块及静态方法,而抽象类可以有静态代码块和静态方法
(4):一个类只能继承一个抽象类,而一个类却可以实现多个接口。
(5):抽象类是对一种事物进行抽象,即对类抽象,而接口是对行为的抽象,抽象类是对整个类进行抽象,包括属性,方法。接口是对行为进行了抽象。
(3):下面是一个抽象类的实际运用
假设学生和工人都去介绍下自己,他们介绍的内容是不一样的,相当于他们都有一个say()的方法,内容由子类的对象决定。
package day02; abstract class Person{ //定义一个抽象类 private String name; private int age; public Person(String name,int age){ this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public void say() {//人说话是一个集体的功能{ System.out.println(this.getContent()); } public abstract String getContent();//说话的内容由子类决定,这个是一个抽象方法,只声明,没有具体的实现 }; class Student extends Person{ private float score; public Student(String name,int age,float score){ super(name,age); this.score = score; } public String getContent(){ return "学生信息--->姓名:"+super.getName()+";年龄:"+super.getAge()+ ";成绩:"+this.score; } }; class Worker extends Person{ private float salary; public Worker(String name,int age,float salary){ super(name,age); this.salary = salary; } public String getContent(){ return "工人信息--->姓名:"+super.getName()+";年龄:"+super.getAge()+ ";工资:"+this.salary; } }; public class demo04 { public static void main(String[] args) { Person p1 = new Student("张三",20,90); Person p2 = new Worker("李四",30,3000); p1.say(); p2.say(); } }